即使事件未执行,事件监听器也会直接触发

时间:2018-05-03 15:54:05

标签: javascript

我想知道为什么当我在html

中执行此操作时

<!DOCTYPE html>
<html>

<p class="click">
	click here
</p>

<script>
	p=document.querySelector(".click");
	p.addEventListener("onclick",alert("click sucess"))
</script>

</html>

我打开浏览器后会立即显示警报,但不会点击。如何点击它时如何点火。

2 个答案:

答案 0 :(得分:1)

那是因为您将可执行代码作为回调传递,而不是函数引用。只要JavaScript运行时到达该行,它就会执行您放置的代码。

.addEventListener() 需要引用在指定事件发生时调用的函数。因此,您需要将可执行代码包装在一个函数中(如下所示)或者只是通过已定义的名称引用函数。

此外,该活动为a,b,c New_Word,d,e f,gNew_WordNew_WordNew_Words,h,i,j ,而非click(该活动属性)。

&#13;
&#13;
onclick
&#13;
&#13;
&#13;

答案 1 :(得分:1)

addEventListener的第二个参数需要是函数

表达式alert("click sucess")立即调用alert函数(传递参数)并评估为该函数的返回值

相当于:

var a_value = alert("click sucess");
p.addEventListener("onclick", a_value);

您需要创建一个使用所需参数调用alert的新函数。

此外,您需要获取正确的名称。它是点击,而不是 onclick

var a_value = alert.bind(window, "click sucess");
p.addEventListener("click", a_value);
相关问题