如何检查正在单击哪个按钮
how to check which button is being clicked
我的问题有点奇怪,因为我有两个html buttons
<button>ok</button>
<button>ok</button>
和我附加onclick
事件在他们像这样
var buttons=document.getElementsByTagName('button');
for(var i=0;i < buttons.length; i++){
buttons[i].onclick = function() {
focus = this;
alert("ok i am clicked")
}
}
现在我在做
现在我有一个事件附加在window
作为
window.onclick = function(e) {
console.log(e.target == focus)
}
根据我这个console.log(e.target == focus)
条件应该是true
,如果我点击first
按钮,但它也是true
的second
按钮!
请告诉我我错在哪里,请给vanilla JavaScript
解决方案,在我的情况下,我不能使用id
,我将非常感谢你:)
从编辑开始,您的问题的解决方案非常简单:
在单击每个按钮时设置focus
元素,然后窗口侦听器触发并检查目标(按钮)是否为focus
元素。
显然,它将始终为真,因为您刚刚将其设置为focus
元素。
您可以添加带有target.addEventListener(type, listener, useCapture);
的窗口侦听器,并将useCapture
设置为true
。
然后它会在按钮的onclick之前触发,你必须点击两次才能返回true。
您可以使用"立即调用的函数表达式"
这个模式将确保在点击i
的时候仍然保持正确的值,因为它有自己的作用域:
var buttons = document.getElementsByTagName('button');
for (var i = 0; i < buttons.length; i++) {
(function (i) {
buttons[i].onclick = function () {
alert("button " + i + " was clicked");
}
}(i));
}
参见小提琴
相关文章:
- 单击按钮以等待单击按钮
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 当值更改时,在servlet中自动获取textarea值,无需单击按钮
- 单击按钮时循环浏览匹配的表
- 单击按钮后启动javascript提示
- 单击按钮时在灯箱中显示不同的内容
- 单击按钮时加载数据
- 如何在不需要单击按钮的情况下获取选项的值
- 单击按钮时显示随机字符串
- 在单击按钮前后禁用提交按钮
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 单击按钮时Div Increment
- 若单击按钮,则更改Javascript中的变量
- 单击按钮更改加载到表中的JSON文件
- 如何在单击按钮时显示2行1列的表格
- 单击按钮前运行事件
- 如何删除父表行时;删除“;在React JS中单击按钮
- 如何创建一个表并在单击按钮时插入此标签和文本字段
- JavaScript-onClick将按钮ID或单击按钮的文本传递给函数
- 如何在单击按钮时显示一个分区,同时隐藏另一个分区