首页 新闻 会员 周边

菜鸟请教 高手请进

0
悬赏园豆:10 [待解决问题]

<html>
 <head>
  <title>图像自动切换</title>
  <script type="text/javascript">
   setInterval("loadImage()",3000);
   var images=['01.jpg','02.jpg','03.jpg','04.jpg','05.jpg'];
   var i=0;
   
   function loadImage()
   {
    i++;
    if(i==5)
     i=0;
    var oImage=document.getElementById('image');
    var oLabel=document.getElementById('info');
    oImage.src='images/'+images[i];
    oLabel.innerText=images[i];
   }
  </script>
 </head>
 <body>
  当前图像名:<label id="info"></label>
  <p></p>
  <img src="images/01.jpg" id="image" width="320" height="240" alt="正在加载">
  <script type="text/javascript">
   var oLabel=document.getElementById('info');
   oLabel.innerText=images[i];
  </script>
 </body>
</html>

 

请问上述代码的执行顺序是如何的 先执行head里的js然后生成body内的html?再调用了setInterval方法后body内的html还再重新生成吗?

dyh333的主页 dyh333 | 初学一级 | 园豆:165
提问于:2010-08-20 21:42
< >
分享
所有回答(4)
0

先加载完 body 中的 HTML后才加载独立存储的、当前文档引用的JS 文件并执行当前文档内嵌的JS;调用setInterval()方法只是改变一个DOM 元素的一个属性,不用重新生成HTML 的。

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-20 21:52
<script type="text/javascript"> var oLabel=document.getElementById('info'); oLabel.innerText=images[i]; </script> 可是如果我在body内少了上面的代码 在第一次显示时oLabel.innerText取不到值 说明第一次加载js时html代码未生成 还请执教 谢谢
支持(0) 反对(0) dyh333 | 园豆:165 (初学一级) | 2010-08-20 21:56
因为图片也是跟 单独存储的JS 一样,要等 HTML文档加载完成后,再从服务器上加载的,所以会出现你说的情况,如果你要在加载后执行JS,那你得在 body 的 onload 事件上调用 函数来做处理。
支持(0) 反对(0) HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-20 23:08
0

在你想知道顺序的地方加一个alert

Astar | 园豆:40805 (高人七级) | 2010-08-21 08:30
0

都知道第一张图是01.jpg,干嘛不直接在label写呢,如果不写就像佛本慈悲所说的加onload事件:<body onload="document.getElementById('info').innerText=images[i];">

wangbo4444 | 园豆:215 (菜鸟二级) | 2010-08-21 22:45
0

先执行head里的js然后生再执行body的html。但执行head里的js只不过是语句,而不是函数,函数也要出发才会执行。像你这里估计js是在执行body后执行的,因为都是函数,而setInterval也是3秒后才让函数loadmage执行。

潇潇息一去不复返 | 园豆:285 (菜鸟二级) | 2010-08-23 16:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册