setTimeout(function(){alert("Hello world");},10000);

解决方案 »

  1.   

    javascript is case-sensitive language
      

  2.   

    2楼正解setTimeout('function(){......}',10000);   
      

  3.   

    setInterval
    不行哦 

    setTimeout
    只执行一次吧
      

  4.   

    哦 也许我理解错了 我理解楼主的要求是让for循环每隔10秒走一步
      

  5.   

    s_liangchao1s说得对,JS无办法在for循环里延迟一个时间再执行下一次的循环,不行的。只能变通,不用for来循环,采取setTimeout或setInterval去执行i次函数或语句,把i作为全局变量或传递参数进行每次+1,以前有人试过想做出一个完美的类似vbs的sleep,但结果总是不如愿的,别想了。
      

  6.   

    难道不对吗?LZ说的是“怎么让JS延迟10S执行?”又不是要循环。
      

  7.   

    等效法:(将i设置成全局变量,并setInterval实现函数功能,并给i加1)
    for(i=1;i <10;i++)
    {
      alert(i);
      delay(10);//延迟10s再执行下一步

    等效于
    <script>
    var i=1;
    var timeID=null;
    function display()
    {
      timeID = window.setInterval("delay()", 1000);
    }
    function delay()
    {
      if(i<10) 
      {
        alert(i);
        i++;
      }
      else
      {
        window.clearInterval(timeID);
      }
    }
    display();
    </script>
      

  8.   

    循环执行,假设循环5秒,可以这样
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
     
        <title>My JSP '002.jsp' starting page</title>
    <script type="text/JavaScript">  var stingTime;
     var   timeLeft   =   1 ;   
      function   countTime()   
      {   
       document.getElementById("hehe").disabled=true;  while(timeLeft%5   ==   0)   
      {   
              alert("你好!"); 
              break;   
      }    
              document.getElementById("timeDiv").innerHTML   =   "timeLeft   = "  +  timeLeft   +   "秒";   
              timeLeft   =   timeLeft   -   1;   
              setTimeout('countTime()',1000);   
      }   </script> </head> 
    <body> 
    <input type='button' value='开始' onclick='countTime();' id='hehe'>
    <div id='timeDiv' ></div>
     </body> </html>
      

  9.   

    for里面延迟...会假死的...<SCRIPT LANGUAGE="JavaScript">
    for(var i=1;i <5;i++)
    {
    alert(i);
    delay((new Date()).getTime(),3);
    }
    function delay(ms,n)
    {
    while(((new Date()).getTime()-n*1000)<=ms)
    {

    }
    }
    </SCRIPT>
      

  10.   

    如果用setTimeout  setInterval 我就不用来问你们了。
    别把我的问题看的那么简单。
    我就是要在for循环里实现。另外,
    有一100行的代码里,
    我在50行和52行之间的51行,要实现延时10S,10S之后再执行第52行的代码。
    这100行代码没有一个function。全部是顺序执行的。
    附:
    别问我为什么100行代码没有一个函数。只要你在现实开发中,你就有可能遇到很棘手的现实的问题。
    事实如此。
    怎么样?
      

  11.   

    个人认为 单纯从for循环的角度来看 是无法实现的
      

  12.   

    21楼的就是一种变能方法,而且只能这样,23楼的就说了,强制搞一些东西去进行延迟会让IE假死,不现实,所以楼主想要构造一个能在for里延迟的函数是不可能实现的,明知不可为的事就不要想了。
      

  13.   

    我找寻JavaScript的sleep函数已经几年了,没有
      

  14.   

    这个问题也困绕了好久
    今日再搜索也未果
    不过突然想出另外种实现方法,不知是不是楼主要的
    我原先的代码
    function reloadAll(){
                if(confirm("确认要刷新所有行数据吗?") == true){
                    var tableObj = document.getElementById("matchList");
                    for(var i=1; i<tableObj.rows.length; i++){
                        var imgs = tableObj.rows[i].getElementsByTagName("img");
                        if(imgs.length > 0){
                            imgs[0].click();
                        }
                    }
                }
            }
    逻辑就是点击表格中的一个图片
    在碰到有几百行的时候,IE会假死,这令我很不爽
    于是想能否延时的执行各行中的click()方法,也就是在for循环中使用延时,但搜索后未果-_-b
    现在想出另外种方式,实验下来效果也不错,代码如下
    function reloadAll(){
                if(confirm("确认要刷新所有行数据吗?") == true){
                    var tableObj = document.getElementById("matchList");
                    setTimeout('imgClick(1, '+tableObj.rows.length+')',1000);
                }
            }
            
            function imgClick(rowIndex, rowsLength){
                var tableObj = document.getElementById("matchList");
                var imgs = tableObj.rows[rowIndex].getElementsByTagName("img");
                if(imgs.length > 0){
                    imgs[0].click();
                }
                rowIndex = rowIndex + 1;
                if(rowIndex < rowsLength){
                    setTimeout('imgClick('+rowIndex+', '+rowsLength+')',1000);
                }
            }
    把FOR循环中的条件判断作为参数,调用另外一个方法,方法中判断条件是否成立,如果成立,则循环调用本身,这样imgClick只有在上一个被调用后1000毫秒后执行下一个imgClick,这样就变成了延时间,而且如果各个延时不同,也可以在IF中判断如过用第1种方式直接在FOR循环中使用延迟调用imgClick(),则是1000毫秒后,全部都执行了......希望这个对楼主有用,不过看帖子时间,似乎过了很久很久了.........
      

  15.   

    搜到这个帖子,MS可以把循环弄成递归, 然后
    var i = 0;
    function a(i){
    setInterval("a(i++)",1000);
    }