0

首先,>>>在这里提琴<<<

我在我的网页中放置了一系列 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 

所以我的其余代码无法执行。

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

4

3 回答 3

3

查看循环迭代的属性:

0
1
2
3
4
length

for...in循环遍历对象的所有可枚举属性。除非您真的打算这样做,否则不应将其用于类似数组的对象。

0通过4工作,但length没有style属性,这就是你的错误所说的。

改用常规for循环:

for (var i = 0; i < inn.length; i++) {
    inn[i].style.marginLeft = 40 + "px";
}
于 2013-07-05T04:45:11.553 回答
0

不要使用 for ... in ... 它更慢且更容易出错试试这个:

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);
}
于 2013-07-05T04:45:39.050 回答
0

另一个对我有用的可能解决方案是代替类名,尝试按 id 使用。仅当您明确不需要类时,才将此行更改为

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

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

并且肯定也对 html 文件进行更改。

于 2018-02-15T06:16:31.670 回答