函数“onclick”即使未在按钮中设置也会被调用

时间:2017-04-01 08:36:17

标签: javascript html

我有以下代码。即使我没有将函数设置为按钮的onclick属性,我也无法弄清楚为什么会出现click事件。

var x = 0;
var onclick = function() {
  console.log("x = " + ++x);
};
<button type="button" onclick="">Click</button>

2 个答案:

答案 0 :(得分:8)

您设置了全局变量onclick,它转换为全局对象window属性onclick。这与您直接设置它基本相同:

window.onclick = function() {
    console.log("x = " + ++x);
};

由于您已在整个window对象上设置了点击事件,因此它不仅会在按钮点击时触发,而且会点击文档中的任何内容(除非事件传播停止)。

答案 1 :(得分:0)

正如@dfsq所提到的,当你window.onclick时,你正在创建var onclick=。类似的说明:

var onerror = function() {
  console.log("ERROR HAPPENED!");
};
<button type="button" onclick="ThisFunctionIsNotDefined()">Click</button>