javascript setTimeout之后怎么继续执行原函数中接下来的代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" language="javascript">function Test(){
setTimeout("count("+"'Long time no see'"+","+0+")",1000);
setTimeout("count("+"'Hello every one'"+","+1+")",2000);
setTimeout("count("+"'My Enghish name is Clay'"+","+2+")",4000);
setTimeout("count("+"'You can call me Claycao'"+","+3+")",6000);
setTimeout("count("+"'Nice to meet you'"+","+4+")",8000);
var ps = document.getElementsByTagName("p");
ps[5].innerHTML = "I don't know";

}function count(i,num){
document.getElementsByTagName("p")[num].innerText = i;
}Test();
</script>
</head><body>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
</body>
</html>

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript" language="javascript">function Test(){
        setTimeout("count("+"'Long time no see'"+","+0+")",1000);
        setTimeout("count("+"'Hello every one'"+","+1+")",2000);
        setTimeout("count("+"'My Enghish name is Clay'"+","+2+")",4000);
        setTimeout("count("+"'You can call me Claycao'"+","+3+")",6000);
        setTimeout("count("+"'Nice to meet you'"+","+4+")",8000);
        setTimeout("document.getElementsByTagName("p")[5].innerHTML='I do not know'",10000);    
    }function count(i,num){
        document.getElementsByTagName("p")[num].innerText = i;
    }Test();
    </script>
    </head><body>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>
    <p>6</p>
    </body>
    </html>
      

  2.   

    晕,不用继续setTimeOut也可以执行。
      

  3.   

    可是我希望它能回到原函数,就是率先执行完所有setTimeout()之后,再回到Test()里面执行
    document.getElementsByTagName("p")[5].innerHTML='I do not know'
    这有什么解决办法呢?
    我在Dreamweaver上试了不行诶
      

  4.   

    LZ,你这个语句已经执行完毕了啊,5个settimeout语句执行后,就执行下面语句了,但是因为页面还没加载完毕,所以无法获得相关的p节点,而settimeout在分别1秒-5秒后执行其中的函数,此时页面已经加载完毕,你可以把上述代码放到window.onload中,即window.onload = test;
      

  5.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>For Test</title>
    <script type="text/javascript" language="javascript">
    //<![CDATA[
    function count(text, index) {  //你的参数名太乱太随意了
    document.getElementsByTagName('P')[index].innerHTML = text;
    }function test() {  //方法名开头字母最好小写
    //setTimeout("count("+"'Long time no see'"+","+0+")", 1000);
    setTimeout(function(){count('Long time no see', 0);}, 1000);
    //setTimeout("count("+"'Hello every one'"+","+1+")", 2000);
    setTimeout(function(){count('Hello every one', 1);}, 2000);
    //setTimeout("count("+"'My Enghish name is Clay'"+","+2+")", 4000);
    setTimeout(function(){count('My Enghish name is Clay', 2);}, 4000);
    //setTimeout("count("+"'You can call me Claycao'"+","+3+")", 6000);
    setTimeout(function(){count('You can call me Claycao', 3);}, 6000);
    //setTimeout("count("+"'Nice to meet you'"+","+4+")", 8000);
    setTimeout(function(){count('Nice to meet you', 4);}, 8000);
    var ps = document.getElementsByTagName('P');
    ps[5].innerHTML = 'I don\'t know';  //编码风格不统一,字符串要么用单引号(建议用')括起来,要么用双引号,别混着用
    }window.onload = function() {
    test();  //当文档载入完成后(或者更好的方法是dom构建完成后)再对dom进行操作
    };
    //]]>
    </script>
    </head><body>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>
    <p>6</p>
    </body>
    </html>
      

  6.   

    另外多说一句:Javascript 里 setTimeout 相当于创建了一个新的线程,这个线程会在你指定的时间间隔后自动开始运行,setTimeout 调用后会马上返回,不会等第一个参数中的代码执行完后再返回,所以不要滥用 setTimeout,你还是没明白 setTimeout 的作用。