javascript中未捕获类型错误:object没有方法
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可能是一个索引,而不是您的对象。也许你想这样写:
a[b].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
实际上不在列表中,但仍然继承属性
相关文章:
- Android/Javascript:Uncaught TypeError Object[Object]没有方法'
- angular ui下拉切换[object object]没有方法父级
- jqxGrid失败并出现错误“;Object[Object Object]没有方法'jqGrid'&”;
- 未捕获的类型错误:Object[Object Object]没有方法'fancybox'
- javascript中的Object.create方法
- jQuery令牌输入轨道获取错误Uncaught TypeError:Object[Object Object]没有方法
- 为什么dijit.form.Select有方法setStore(),而dijit.fform.FilteringSele
- 重写JavaScript中的Object.create方法
- 未捕获的类型错误:Object[Object Object]没有方法'滑块'
- jquery autocomplete组合框错误:未捕获类型错误:Object[Object Object]没有方法
- JQuery Object[Object Object]没有方法'滑块'当尝试使用滑块演示时
- jquery Object 没有方法 'xyz'
- Javascript TypeError: Object 没有方法
- Object.Prototype 方法和 IIFE(立即调用的函数表达式)中的“use strict”
- 使用 $().trigger() 并获取 TypeError: Object [object Object] 没有方法“
- SAPUI5 setTimeout() --> Object 没有方法
- 创建一个具有 3 个方法的 JavaScript 对象抛出 Object 没有方法
- Jquery:Uncatch TypeError:Object #
- Azure 节点.js脚本:TypeError:Object #
没有方法“toQueryObject” - jQuery uncatch TypeError Object 没有方法