javascript - 单击正文内的按钮时,如何停止正文中的事件?
问题描述
所以我想在单击正文时创建按钮,但是当我单击该正文内的按钮时,我不想创建另一个按钮。那么我应该如何处理呢?我尝试使用 stoppropagation 但无法正常工作
/* var body = document.getElementsByTagName("body")[0];*/
document.body.onclick = function(event) {
var x = event.clientX;
var y = event.clientY;
var btn = document.createElement("button");
btn.style.position = "absolute";
btn.style.left = x + "px";
btn.style.top = y + "px";
btn.innerHTML = "click me";
document.body.appendChild(btn);
btn.className = "buton";
event.stopPropagation;
var butoane = document.getElementsByClassName("buton");
for (let i = 0; i < butoane.length; i++) {
butoane[i].onclick = function() {
alert("ai apasat butonul" + (i + 1));
}
}
}
解决方案
event.stopPropagation
是一个函数,你需要调用它,event.stopPropagation()
但无论如何,这不会满足你的需求。您可以忽略对您创建的按钮的点击,如下所示:
document.body.onclick = function(event) {
if (event.target.classList.contains('buton')) {
return;
}
var x = event.clientX;
var y = event.clientY;
var btn = document.createElement("button");
btn.style.position = "absolute";
btn.style.left = x + "px";
btn.style.top = y + "px";
btn.innerHTML = "click me";
document.body.appendChild(btn);
btn.className = "buton";
event.stopPropagation;
var butoane = document.getElementsByClassName("buton");
for (let i = 0; i < butoane.length; i++) {
butoane[i].onclick = function() {
alert("ai apasat butonul" + (i + 1));
}
}
}
<button>Button</button>
它的作用是检查单击的元素是否具有buton
类,如果有,则返回(不要运行生成按钮的代码)。
此外,您可以改进这一点,而不是转到您创建的每个按钮来重置它的onclick
侦听器,您可以执行以下操作:
btn.onclick = function() {
alert("ai apasat butonul" + butoane.length);
}
推荐阅读
- swift - 使用 swift 在 macOS 中打开新的伪终端设备文件
- git - 删除 git 历史记录中的多合并功能分支
- django - 如何在 django 中保存数组数据?
- php - 使用 PHP 和 mysql 创建 CSV 文件
- javascript - 具有多个返回值的 Ajax 调用服务
- datetime - 在 java 8 中解析时间字符串 - ClockHourOfAmPm 的值无效
- c# - .OrderBy 多列与 .GroupBy
- kotlin - Kotlin 中的自定义 UiObject2Condition
- go - 为 gRPC 服务配置 Envoy 代理“重试”机制
- gremlin - Gremlin:是否可以过滤可选属性?(图数据库为 Neptune)