2012-11-05 82 views
0

这是我的代码:Javascript在页面加载?

var myarray=[(lots of things)]; 
var elem=document.getElementById('subtitle'); 
window.setInterval(function(){ 
    elem.innerHTML=myarray[Math.round((myarray.length-1)*Math.random())]; 
},30000); 

这工作得很好,除了前30秒,没有任何反应。我必须等到它重新发生时才会发生。我可以在页面加载时从myarray中选择一个吗?谢谢

+0

'window.onload'事件... ...谷歌... EUH – 2012-11-05 21:48:04

回答

3

它必须等待30秒,因为当你设置一个时间间隔时,它不会马上点燃它!分解成一个函数并调用它。如果将脚本添加到页面上的元素后面,则不必担心window.onload或文档已准备就绪。

<div id="subtitle"></div> 
<script> 
    (function(){ 
     var myarray=[(lots of things)]; 
     var elem=document.getElementById('subtitle'); 

     function dispNum() { 
      elem.innerHTML=myarray[Math.round((myarray.length-1)*Math.random())]; 
      window.setTimeout(dispNum,30000); 
     }  
     dispNum(); 
    })(); 
</script> 

reunning例如:jsFiddle

+0

你100%的绝对正确保每个页面加载需要确切30秒? – 2012-11-05 21:49:34

+0

@ H2CO3,海报说它只有30秒才会运行。他们从不在页面启动时调用它。 – epascarello