首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS中循环的定时

问JS中循环的定时
EN

Stack Overflow用户
提问于 2018-11-13 18:27:28
回答 5查看 298关注 0票数 0

我用JS编写了这段代码:

代码语言:javascript
复制
function startFunction() {
p1 = document.getElementById('p1').innerHTML;
for (var i=1; i<=p1.length; i++) {
        alert(p1.slice(0, i));
    }
}

我在html中使用onload事件调用函数:

代码语言:javascript
复制
    <body onload="startFunction()">

这是带有p1 id的段落:

代码语言:javascript
复制
    <p id="p1">Hi, I'm</p>

如何使for循环延迟。我要我的程序逐个字母地写p1文本。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-11-13 18:37:50

您不能也不应该延迟循环中的任何内容,因为这就是生成没有响应的页面的方法:浏览器在JavaScript代码返回之前不会对用户操作做出反应或做任何可见的事情。

相反,您可以使用一些计时器,比如setInterval()。

​

代码语言:javascript
复制
function startFunction() {
    var p1 = document.getElementById('p1');
    var txt = p1.innerHTML;
    var i=0;
    var timer = setInterval(function() {
        p1.innerHTML = txt.slice(0,i++);
        if(i>txt.length) {
            clearInterval(timer);
        }
    },500);
}

startFunction();
代码语言:javascript
复制
<p id="p1">Hi, I'm</p>

​

票数 1
EN

Stack Overflow用户

发布于 2018-11-13 18:37:05

代码语言:javascript
复制
var alertEachLetter =function(p1, i){
    setTimeout(function(){
        alert(p1.slice(0, i));
    },1000);
};

 function startFunction() {
 p1 = document.getElementById('p1').innerHTML;
 for (var i=1; i<=p1.length; i++) {
        alertEachLetter(p1, i);
    }
}

为什么要创建这个alertEachLetter函数。为此,您需要检查此链接

setTimeout in for-loop does not print consecutive values

票数 1
EN

Stack Overflow用户

发布于 2018-11-13 18:39:41

你不需要循环,你需要一个interval。Javascript的interval特性将(大约)按请求的间隔调用您的函数。因此,例如:

代码语言:javascript
复制
function startFunction() {
  var p1 = document.getElementById('p1').innerHTML
  var count = 1
  var finished = p1.length
  var iv = setInterval(function() {
    alert(p1.slice(0,count++))
    if (count > finished) {
      clearInterval(iv) // stops the interval from firing once we finish our task
    }
  }, 1000) // 1000 ms, or every second.
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53287359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档