Javascript getElementsByClassName不是';行不通

Javascript getElementsByClassName不是';行不通,javascript,dom,Javascript,Dom,这段代码在console.log中没有错误,但是它没有显示它应该显示的类名 document.getElementsByClassName("abc").onmouseover = function(){mouseOver()}; function mouseOver(){ abc.innerHTML = "Class name " + abc.className; } .getElementsByClassName()例程返回元素列表。您不能像尝试那样通过列表直接向所有元素添加事件处

这段代码在console.log中没有错误,但是它没有显示它应该显示的类名

document.getElementsByClassName("abc").onmouseover =  function(){mouseOver()};
 function mouseOver(){
 abc.innerHTML = "Class name " + abc.className;
 }

.getElementsByClassName()
例程返回元素列表。您不能像尝试那样通过列表直接向所有元素添加事件处理程序。您必须显式迭代:

var abc = document.getElementsByClassName("abc");
for (var i = 0; i < abc.length; ++i) {
  // ...
}

使用
.forEach
确保事件处理程序使用循环回调每次调用专用的局部变量(
元素
)正常工作。

document.getElementsByClassName返回具有所有给定类名的所有子元素的类似数组的对象。因此,必须将onmousever事件与每个子对象绑定

你可以这样试试

var elements=document.getElementsByClassName(“abc”)
对于(var i=0;i

老鼠在我身上

文档。GetElementsByCassName(“abc”)
返回html元素的集合,您应该在集合中遍历这些元素中的每一个,也可以在事件处理程序中使用
。@FelixKling yes sure;我懒得验证
onfoo
类型处理程序是否始终正确绑定了
this
:)谢谢您的帮助,但这在chrome上不起作用。我在jsfiddle上试过,它确实有效。我不知道该怎么办…它在chrome上为我工作。你能把你的密码寄出去吗?var elements=document.getElementsByClassName(“abc”)for(var i=0;ivar abc = document.getElementsByClassName("abc"); [].forEach.call(abc, function(element) { element.onmouseover = function() { element.innerHTML = "Class name: " + element.className; }; });