[英]Uncaught Type Error in javascript: object has no method
Uncaught TypeError: Object 0 has no method 'addEventListener'
var A={};
A.addEventsToClassName=function(event,className,func)
{
var a=document.getElementsByClassName(className);
for(var b in a)
{
b.addEventListener(event,func,false);
}
};
一旦在代码中稍后调用该函数,对象 b 就意味着成为元素对象。 我怎样才能防止这个错误?
一for (var b in a)
将给内的属性名称a
,而不是实际值; 所以你需要在你想使用它们时取消引用a
。
a[b].addEventListener(event, func, false);
此外,它是一个类似数组的数据结构,所以你应该像这样迭代它:
for (var i = 0; i < a.length; ++i) {
a[i].addEventListener(event, func, false);
}
b
既不是对象也不是元素,它是一个字符串( "0"
)。 for...in
给你的是键而不是值。
不要使用for(var b in a)
遍历NodeList (它不仅会遍历自身的属性,还会遍历从其父级继承的属性),而是这样做:
for(var i = 0; i < a.length; a++){
a[i].addEventListener...
}
如果你问为什么,那么以这个为例,
for(var a in document.querySelectorAll("body")){
console.log(a);
}
>"0"
>"length"
>"item"
您可以看到for...in
在这种情况下不起作用,因为length
和item
实际上不在列表中,但仍然继承了属性。
b 可能是索引而不是您的对象。 也许你想这样写:
a[b].addEventListener(event,func,false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.