我有以下代码。即使我没有将函数设置为onclick按钮属性,我仍然无法弄清楚为什么会发生点击事件。函数“onclick”被称为即使它没有设置在按钮
var x = 0;
var onclick = function() {
console.log("x = " + ++x);
};
<button type="button" onclick="">Click</button>
我有以下代码。即使我没有将函数设置为onclick按钮属性,我仍然无法弄清楚为什么会发生点击事件。函数“onclick”被称为即使它没有设置在按钮
var x = 0;
var onclick = function() {
console.log("x = " + ++x);
};
<button type="button" onclick="">Click</button>
那么你设置全局变量onclick
,转化为全局对象window
财产onclick
。这基本上是一样的,如果你要直接设置它:
window.onclick = function() {
console.log("x = " + ++x);
};
而且因为您设置了整个window
对象click事件,将火不仅按一下按钮,但在你的文档中点击任何东西(除非事件传播被停止)。
[* event.stopPropragation *](https://developer.mozilla.org/en/docs/Web/API/Event/stopPropagation)只会停止它通过侦听器,它不会阻止它进入侦听器(因为它只能从侦听器调用,所以它必须先到达侦听器)。所以“* ...除非事件阻止事件被其他一些点击监听器事先阻止*”。 ;-) – RobG
即使用“var”“定义”它?这很好。我想我可能犯了与OP相同的错误! –
@MrLister那么在这种情况下,我们在全局范围内,所以'var'设置全局变量。如果这段代码在函数内部,那么它当然不会设置'window.onclick'。 – dfsq
正如@dfsq提到的那样,当您做var onclick=
时,您正在创建window.onclick
。类似的说明:
var onerror = function() {
console.log("ERROR HAPPENED!");
};
<button type="button" onclick="ThisFunctionIsNotDefined()">Click</button>
我可以按下按钮,但什么也没有发生。 – suleiman
@suleiman检查您的浏览器的控制台。 Barun var onclick与window.onclick相同。 – Ali