Java 脚本事件处理程序未按预期触发
Java script event handler not firing as expected
我遇到了这个问题,JavaScript 当处理程序作为内联函数调用提供时,事件处理程序按预期被调用,但是当调用另一个函数以响应事件时它无法按预期工作。我不确定为什么会这样,如果有人能解释一下就好了。谢谢。
<html>
<head>
</head>
<body>
Name: <input type="text" id="text1"> Hello World!
<script>
var i= 0;
function myFun()
{
i++;
console.log('got key up event ' + i);
}
var textElem = document.getElementById('text1');
//below works as expected ie. prints 'got key up event 1', 'got key up
event 2' .. on console
//textElem.addEventListener('keyup', function () {i++; console.log('got key up event ' + i);});
//If we comment above call and use below - textElem.addEventListener...
// it does not work as expected it only logs 'got key up event 1' on page load
// after that it (myFun) is not getting called even if i press key on text box.
//textElem.addEventListener('keyup', myFun() );
</script>
</body>
</html>
尝试:
textElem.addEventListener('keyup', myFun );
即myFun
没有 ()
addEventListener
需要一个函数作为第二个参数。如果你传递 myFun()
浏览器评估函数(这里你得到 got key up event 1
),但是函数 returns 什么都没有,所以没有添加实际的事件监听器。
当您传递 myFun
时,实际函数被添加为事件侦听器。
我遇到了这个问题,JavaScript 当处理程序作为内联函数调用提供时,事件处理程序按预期被调用,但是当调用另一个函数以响应事件时它无法按预期工作。我不确定为什么会这样,如果有人能解释一下就好了。谢谢。
<html>
<head>
</head>
<body>
Name: <input type="text" id="text1"> Hello World!
<script>
var i= 0;
function myFun()
{
i++;
console.log('got key up event ' + i);
}
var textElem = document.getElementById('text1');
//below works as expected ie. prints 'got key up event 1', 'got key up
event 2' .. on console
//textElem.addEventListener('keyup', function () {i++; console.log('got key up event ' + i);});
//If we comment above call and use below - textElem.addEventListener...
// it does not work as expected it only logs 'got key up event 1' on page load
// after that it (myFun) is not getting called even if i press key on text box.
//textElem.addEventListener('keyup', myFun() );
</script>
</body>
</html>
尝试:
textElem.addEventListener('keyup', myFun );
即myFun
没有 ()
addEventListener
需要一个函数作为第二个参数。如果你传递 myFun()
浏览器评估函数(这里你得到 got key up event 1
),但是函数 returns 什么都没有,所以没有添加实际的事件监听器。
当您传递 myFun
时,实际函数被添加为事件侦听器。