如何查看点击了哪个按钮

时间:2015-07-13 04:52:29

标签: javascript

我的问题有点奇怪,因为我有两个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条件应为firsttrue按钮也是second

请告诉我我错在哪里,请给出vanilla JavaScript解决方案,在我的方案中我不能使用id我将非常感谢你:)

here就是它的垃圾箱。

2 个答案:

答案 0 :(得分:1)

从编辑中,问题的解决方案非常简单:

单击每个按钮设置focus元素,然后窗口侦听器将触发并检查目标(按钮)是否为focus元素。

显然,它总是如此,因为你只需将它设置为focus元素。

您可以使用target.addEventListener(type, listener, useCapture);添加窗口监听器,并将useCapture设置为true
然后它会在按钮的onclick之前触发,你必须单击两次才能使回调返回true。

答案 1 :(得分:0)

您可以使用"Immediately-invoked function expression"

此模式将确保在点击期间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));
}

请参阅 fiddle