2016-05-17 64 views
0

我一直試圖在JavaScript中循環交通燈圖像。我不知道該怎麼做,有人可以提供建議。JavaScript中循環的數組圖像

+0

如果(div.count | | dvi.count == image.length),拼寫錯誤在這裏。你已經混合了div和dvi .. – Ankit

+0

我在那裏看到一個'div.count'。我假設它應該是'dvi'?你也需要爲'setTimeout'提供一個有效的函數,而不是一個字符串。 – apokryfos

+0

@apokryfos'setTimeout'可以接受一個字符串作爲它的第一個參數 - 它是'eval's。糟糕的做法,但它仍然有效 – Jamiec

回答

0

稍微修改您的代碼。這是一個工作示例。

我刪除了dvi.count計數器,因爲它造成了更多的混淆,我們需要維護計數器以外的函數。我改變了邏輯以繞過所述陣列中的圖像的索引從0

var image = new Array("red.jpg", "redamber.jpg", "green.jpg", "amber.jpg"); 
 
var timeout; 
 

 
function stopIt() { 
 
    clearTimeout(timeout); 
 
} 
 

 
function changeimage (images, index) { 
 
    var dvi = document.getElementById(images); 
 
    
 
    if(image.length <= index) 
 
    index = 0; 
 

 
    dvi.src = image[index]; 
 
    dvi.alt = image[index]; 
 

 
    timeout = setTimeout('changeimage("' + images + '",' + (index + 1) + ')', 1000); 
 
}
<body onload="changeimage('changer',0)"> 
 
    <div> 
 
    <img src="t1" alt="test1" id="changer" /> 
 
    </div> 
 
</body>

+0

Thanks so很多,這對我有很大的幫助。 – SDR

0

我已3次代碼修改

  1. 修正了類型0 div.count開始到dvi.count
  2. 更正了在if語句中的縮進和括號(不是必須的,但是使代碼的方式爲m礦石可讀)
  3. setTimeout替換你的討厭使用字符串參數是一個函數引用

function changeimage(images){ 
    var dvi=document.getElementById(images); 
    if(!dvi.count || dvi.count == image.length){ 
     dvi.count=0; 
    } 
    dvi.src=image[dvi.count]; 
    dvi.alt=image[dvi.count]; 
    dvi.count=dvi.count+1; 
    timeout=setTimeout(function(){ 
     changeimage(images); 
    },3500); 
} 

活生生的例子:https://jsfiddle.net/Lofug2hf/1/