2014-03-24 74 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;