"的setTimeout" " for"

时间:2015-01-11 06:03:49

标签: javascript jquery html

我想要显示一个"嗨。"每一秒,但以下代码确实7"嗨。"一秒。 我该怎么办?

的script.js

var main = function(){
for(var i=0; i<7; i++){
setTimeout(function(){$('div').append("Hi.");},1000);
};

};

$(document).ready(main);

的index.html

<html>
<head>
</head>
<body>
<div></div>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

您希望使用setInterval代替setTimeout

您可以setIntervalclearInterval一起使用来完成您的需要。

答案 1 :(得分:0)

for循环创建7个超时,从循环完成时完成1秒。您可以通过循环索引多次超时。

var main = function(){
    for(var i=0; i<7; i++){
        setTimeout(function(){$('div').append("Hi.");}, i * 1000);
    };
};

$(document).ready(main);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div></div>

或者,您可以使用setInterval和计数器清除第7次运行的间隔。对于较长的循环,这会更好。

var main = function(){
    var counter = 0;
    var interval = setInterval(function() {
        $('div').append("Hi.");
        if(++counter >= 7) {
            clearInterval(interval);
        }
    }, 1000);
};

$(document).ready(main);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div></div>