2011-05-04 112 views
0

嗨即时通讯新的JavaScript和即时通讯尝试弄清楚如何追加一个字符串后分配的时间量。Javascript自动更改字符串

After 3 secs append string (How) 
After 3 secs append string (are) 
After 3 secs append string (you) 
After 3 secs append string (?) 

感谢:d

+0

请注意@SLaks'评论**不要**将字符串传递给'setTimeout'。它是伪装的“eval”。 – 2011-05-04 02:55:41

回答

1
<html> 
    <head></head> 
    <body> 
     <span id="mySpan"></span> 
    </body> 
    <script> 
     setTimeout('document.getElementById("mySpan").innerHTML += "How ";', 3000); 
     setTimeout('document.getElementById("mySpan").innerHTML += "are ";', 6000); 
     setTimeout('document.getElementById("mySpan").innerHTML += "you";', 9000); 
     setTimeout('document.getElementById("mySpan").innerHTML += "?";', 12000); 
    </script> 
</html> 
+2

不要将字符串传递给'setTimeout'。 – SLaks 2011-05-04 02:38:28

+0

请不要建议将字符串传递给'setTimeout'。它是伪装的“eval”。 – 2011-05-04 02:56:22

3

使用setTimeout

var text = 'How are you ?'.split(' '), 
    delay = 3000; 

function generateCallback(text) { 
    return function() { 
     alert(text); 
    }; 
} 

for (var i=0; i<text.length; i++) { 
    setTimeout(generateCallback(text[i]), delay*(i+1)); 
} 

http://jsfiddle.net/mattball/dYBUs/

0

由于电流答案的修改,单setInterval电话可以使用,取消它时,将显示所有的话:

// s is string to display 
// interval is the time in milliseconds between adding words 
// id is the id or reference to a DOM element to display s in 
function staggerDisplay(s, interval, id) { 

    var el = typeof id == 'string'? document.getElementById(id) : id; 
    var sBits = s.split(' '); 
    var numWords = sBits.length; 
    var i = 0; 
    var intervalRef = setInterval(
    function() { 
     if (i < numWords) { 
     el.innerHTML += ' ' + sBits[i++]; 
     } else { 
     clearInterval(intervalRef); 
     } 
    }, interval); 
}