Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getElementById与getElementsByTagName_Javascript - Fatal编程技术网

Javascript getElementById与getElementsByTagName

Javascript getElementById与getElementsByTagName,javascript,Javascript,基本问题 document.getElementById("yy").onmouseover = hi; //document.getElementsByTagName("li").onmouseover = hi; ... 在这个例子中,为什么第一行可以工作,而第二行没有注释时却不行呢 我知道我可以用jQuery轻松做到这一点,只是想知道…因为document.getElementsByTagNameli返回节点列表,所以需要将事件处理程序绑定到节点列表的每个元素 由于document.ge

基本问题

document.getElementById("yy").onmouseover = hi;
//document.getElementsByTagName("li").onmouseover = hi;
...
在这个例子中,为什么第一行可以工作,而第二行没有注释时却不行呢

我知道我可以用jQuery轻松做到这一点,只是想知道…

因为document.getElementsByTagNameli返回节点列表,所以需要将事件处理程序绑定到节点列表的每个元素

由于document.getElementsByTagNameli返回节点列表,因此需要将事件处理程序绑定到节点列表的每个元素


因为getElementsByTagName返回DOM元素的集合。当然,集合没有单击事件。如果要将事件绑定到集合中的每个元素,只需在集合中循环并向集合中的每个DOM元素添加处理程序

因为getElementsByTagName返回DOM元素的集合。当然,集合没有单击事件。如果要将事件绑定到集合中的每个元素,只需在集合中循环并向集合中的每个DOM元素添加处理程序

Try:.getElementsByTagName返回一个对象数组,而.getElementById返回一个对象,因此必须使用前者选择一个特定索引,但不能使用后者,因为后者本质上是单一的。Try:.getElementsByTagName返回一个对象数组,而.getElementById返回一个对象,所以你必须用前者选择一个特定的索引,而不是后者,因为它本质上是单一的。
var list = document.getElementsByTagName("li");
for (var i= 0; i < list.length; i++) {
  list[i].onmouseover = hi;
}