gpt4 book ai didi

javascript - 为什么要创建循环来获取事件元素?

转载 作者:行者123 更新时间:2023-11-29 20:08:18 24 4
gpt4 key购买 nike

我用来学习 JavaScript 的教科书使用以下代码在用户单击段落时显示警告对话框:

var paras = document.getElementsByTagName("p");
for (var i=0; i<paras.length; i++) {
paras[i].onclick = function() {
alert("You clicked on a paragraph.");
}
}

我看不出循环遍历所有 p 元素的原因,而是识别它们并简单地将 onclick 事件处理程序附加到它。像这样:

var paras = document.getElementByTagName('p');
paras.onclick = alert("You clicked on a paragraph.");

这不是做同样的事情吗?为什么需要遍历 p 元素?

最佳答案

不,这绝对不是做同样的事情:

  1. 您根本无法将事件处理程序附加到 HTML 节点列表(好吧,您可以,但什么也不会发生);
  2. 您正在尝试将“onclick”设置为 alert()结果语句,而不是您示例中的函数。 (这并不重要,因为它无论如何都行不通。)

现在有一种方法可以只用一个事件处理程序来处理点击,但我会让你继续读你的书:-)

edit — 详细说明第 2 点:

alert("hi");

是一个函数调用。它的值将是调用该函数返回的任何值。因此,

paras.onclick = alert("You clicked on a paragraph.");

设置“paras”引用的对象的“onclick”属性,并将其设置为从alert()返回的值。 (可能总是 undefined )。

就像您书中的示例代码一样,“onclick”处理程序之类的东西需要是函数。这就是示例代码中间发生的事情:每个人的“onclick”属性 <p> DOM 元素被设置为一个函数。 内部 该函数是对 alert() 的调用.

关于javascript - 为什么要创建循环来获取事件元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com