另一个未捕获的类型错误::无法读取属性'替换'的未定义
Yet Another Uncaught TypeError: : Cannot read property 'replace' of undefined
我正在编写一些JS代码来切换某些DOM元素的类。一切都在正常工作,但我也遇到了这个错误阻止执行后面的代码。
我添加了一个检查,以确保元素数组不会像我想的那样为空这就是问题所在。但错误仍然存在。当调用replace
时,调试总是显示old_name
的值。我是不是缺少了JS风格的东西?
这是导致错误的代码部分,特别是第31行:
if (w > MOBILE_THRESHOLD) {
responsive_elements = document.getElementsByClassName("desktop");
if (responsive_elements.length > 0) {
for (i in responsive_elements) {
var old_name = responsive_elements[i].className;
var new_name = old_name.replace("desktop", "mobile");
responsive_elements[i].className = new_name;
}
}
必要时,我会乐意提供更多的代码,或任何需要的信息。谢谢
永远不要使用for...in
循环来迭代类似数组的对象
在这种情况下,HTMLCollection
具有类似于item
或namedItem
的可枚举属性。访问这些不会返回HTML元素,因此className
将是未定义的。
为了正确迭代,您可以使用以下之一
for(var i=0; i<responsive_elements.length; ++i) {
// ...
}
[].forEach.call(responsive_elements, function(element, index, collection) {
// ...
});
相关文章:
- 主干中的模型属性未定义
- JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
- JSON对象属性未定义
- Waypoint的循环,退出循环后属性未定义
- Javascript:错误“无法设置属性”..'未定义”
- 翡翠 - 显示对象属性 - 未定义
- 属性未定义,但控制台.log可以看到它
- JavaScript 对象的属性未定义
- Javascript 对象属性未定义(但属性已设置)
- DOM 元素属性未定义 - jquery / ruby on rails.
- Nodejs JSON 属性未定义
- 错误:窗口打开器的属性未定义
- angular Js:Array.lenght属性未定义
- 正在尝试访问JavaScript对象的属性=未定义
- Marionette属性未定义,请从API获取
- AngularJS作用域属性未定义
- 对象的属性未定义,尽管已指定值
- 为什么我一直收到一个错误,说对象属性未定义
- 对象属性未定义,但我看到它不是
- .map()img src属性未定义