Javascript For循环不会工作

时间:2014-01-05 19:45:31

标签: javascript arrays for-loop

这是我的代码:

<div class="div">
<div id="picture"><img src="news1.jpg" /></div>
<div id="picture1"><img src="news2.jpg" /></div>
<div id="picture2"><img src="news3.jpg" /></div>
</div>
<script type="text/javascript">

var element = document.getElementById("picture")
var element1 = document.getElementById("picture1")
var element2 = document.getElementById("picture2")


var zdjecia = new Array("element", "element1", "element2");
    for(var i=0; i < zdjecia.Length; i++)
        {   
         zdjecia[i].style.opacity="1";
        }
</script>

你能不能给我一些建议为什么这个循环不起作用?如果我发现问题,我会将settimeout和setTimeInterval添加到此,但此时我无法找到该循环的问题。

5 个答案:

答案 0 :(得分:6)

不是将元素添加为字符串,而是按原样添加元素

var zdjecia = new Array(element, element1, element2);

并且应使用zdjecia.length

访问length属性

答案 1 :(得分:1)

其他人向您展示了您所犯的两个编码错误(.length上的大写错误并使用字符串而不是直接变量引用),但我建议您对代码进行此更改:

var items = ["picture", "picture1", "picture2"];
for (var i = 0; i < items.length; i++) {
   document.getElementById(items[i]).style.opacity = 1;
}

答案 2 :(得分:0)

更清洁的方法

<div class="div">
  <div class="picture"><img src="news1.jpg" /></div>
  <div class="picture"><img src="news2.jpg" /></div>
  <div class="picture"><img src="news3.jpg" /></div>
</div>

<script>
  var zdjecia = document.getElementsByClassName('picture');
  for(var i = 0; i < zdjecia.length; i++) {
    zdjecia[i].style.opacity = '1';
  }
</script>

以下是您的代码出了什么问题

您需要遍历实际的DOM元素,而不是具有相同变量名var zdjecia = new Array(element, element1, element2);的字符串。

此外,JavaScript区分大小写,并且您不小心将length大写。 zdjecia.Length应为zdjecia.length

[1, 2, 3].Length // => undefined
[1, 2, 3].length // => 3

此外,最好使用JavaScript的数组文字(方括号形式)来实例化一个新数组:

var zdjecia = [element, element1, element2];

JavaScript的数组文字比直接实例化更可预测。请考虑以下事项:

new Array(2, 1) // => [2, 1]
new Array(2)    // => [undefined, undefined]

保留直接使用new Array()来预先分配数组中的空间。

答案 3 :(得分:0)

更正后的代码:

var zdjecia = new Array(element, element1, element2);  //Array of objects, not strings
for(var i=0; i < zdjecia.length; i++)        //Use .length instead of .Length
    {   
     zdjecia[i].style.opacity="1";
    }

欢呼声

答案 4 :(得分:0)

您有一些小错误。首先,您将元素添加为字符串,而不是元素本身。其次,你大写了“#length;&#39; length&#39;在你的for循环中。不要这样做。

var zdjecia = new Array(element, element1, element2);

for(var i=0; i < zdjecia.length; i++){   
 zdjecia[i].style.opacity="1";
}