2014-01-05 3 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

Спасибо Бармару за ответ! Есть ли другой способ сделать это? – 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 чувствителен к регистру, и вы случайно заглавны 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() для помещения в предварительное выделение массива.

+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

Смежные вопросы