2014-01-05 35 views
0

這是我的代碼:的JavaScript循環不會工作

<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添加到這個,但在這一刻我無法找到該循環的問題。

+1

您試圖爲字符串添加樣式,樣式僅適用於DOM元素。 – Barmar

+0

我也在使用CSS。在CSS中,所有圖片的不透明度均等於0.當頁面加載時,圖片應該出現,但是他們不會,這就是我想要的不想出現的,爲什麼他們不會出現。 – Shagohad

+0

謝謝Barmar的回答!有沒有不同的方式來做到這一點? – Shagohad

回答

1

其他人證明你所做(上.length錯誤的資本化和使用字符串,而不是直接的變量引用)兩種編碼錯誤,但我建議這改變了代碼:

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

該代碼正在工作:)。很多感謝你! – Shagohad

6

而不是添加的元素爲字符串的,添加元素,因爲它們是

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

和長度屬性應該同zdjecia.length

+0

非常感謝您的答覆,但仍然存在問題。該代碼不會工作:/ – Shagohad

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區分大小寫,並且您意外地大寫了lengthzdjecia.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()

+0

謝謝你的回答和建議! – Shagohad

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"; 
    } 

歡呼

0

你有一些小錯誤。首先,您將元素添加爲字符串,而不是元素本身。其次,你在for循環中大寫'長度'。不要這樣做。

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

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

非常感謝任何答案,但仍存在問題。該代碼簡直不會工作:/ – Shagohad