2013-07-05 37 views
0

首先,>>>FIDDLE HERE<<<无法设置属性“marginLeft”的未定义

我把一系列的div在我的网页,并使用JavaScript来改变他们的利润。

var inn = document.getElementsByClassName("line"); 
for (var i in inn) { 
    inn[i].style.marginLeft=40+"px"; 
} 

虽然它改变了我的利润已经在我的控制台报告一个错误:

Uncaught TypeError: Cannot set property 'marginLeft' of undefined 

所以我剩下的代码不能执行。

你能帮我解决这个问题吗?谢谢!

回答

3

看看属性,超过你的循环迭代:

0 
1 
2 
3 
4 
length 

一个for...in loop遍历对象的所有枚举的属性。除非你真的打算这么做,否则不应该将它用于类似数组的对象。

0通过4工作,但length没有一个style属性,它是你的错误说什么。

使用常规for循环,而不是:

for (var i = 0; i < inn.length; i++) { 
    inn[i].style.marginLeft = 40 + "px"; 
} 
0

不要使用......在......它的速度较慢,更容易出错试试这个:

var inn = document.getElementsByClassName("line"); 
var i=0; 
for (i=0;i<inn.length;i++) { 
    inn[i].style.marginLeft=40+"px"; 
} 

下一个显示for ... in ...我认为它可能包含一些不是Elements的东西,所以.style是未定义的。

for(i in inn){ 
    console.log(i); 
} 
0

另一个可行的解决方案,我为我工作的不是类名,尝试使用id。只有当你明确不需要类 改变这一行

var inn = document.getElementsByClassName("line"); 

var inn = document.getElementById("line"); 

和肯定使HTML文件也改变。

相关问题