2014-03-24 106 views
-1

我有這樣的index.html的javascript循環功能

<html> 
<head> 
     <script type="text/javascript" src="scripts.js" > </script> 
</head> 
<body> 
<center><h1>Images</h1></center> 
<center> 
    <img id="b1" onclick="image()" src="1.jpg"> 
    <img id="b2" onclick="image()" src="2.jpg"> 
    <img id="b3" onclick="image()" src="3.jpg">  
    <img id="b4" onclick="image()" src="4.jpg">  
</center> 

</body> 
</html> 

這scripts.js中

function image(){ 

    for(var i = 1; i < document.images.length; i++) 
    { 
      document.write(i); 
    } 

當我點擊第一個圖像,它只是在屏幕上顯示的號碼1和瀏覽器中得到陷入思考。

爲什麼不顯示123?

+0

請注意'

'在HTML5中已經過時,'document.write'被認爲是不好的做法。 ECMAscript中的數組也以'0'開頭,而不是'1'。 – Dai

回答

0

數組索引在ECMAScript中0開始,不1,你需要重寫你的循環像這樣:

for(var i=0;i<document.images.length;i++) { 

} 

注意document.write現在被認爲是不好的做法,因爲它引發了很多重鏈的提升瀏覽器的DOM和佈局引擎。請使用document.createElement

1

爲什麼你的循環是不工作的原因是因爲你第一次叫

document.write 

它刪除所有圖像從網頁,從而減少了document.images節點列表的長度歸零。

如果你想看到1234,而不是使用document.write(如黛指出,這是無論如何不建議使用)使用方法:

document.body.innerHTML += i; 

而且,戴正確地指出,第一個數組索引是0不爲1,那麼您的for循環應該如下:

for(var i = 0; i < document.images.length; i++) 
{ 
     document.body.innerHTML += i; 
} 

說明:VAR I = 0;