Javascript setInterval每次运行都会变短
因此,我制作了一个函数,可以逐字打印文本,如下所示。(我知道我的命名方案不太好,请不要开玩笑。还要记住,我对编码还是相当陌生,所以我的代码可能看起来有点奇怪/低效。)Javascript setInterval每次运行都会变短,javascript,setinterval,Javascript,Setinterval,因此,我制作了一个函数,可以逐字打印文本,如下所示。(我知道我的命名方案不太好,请不要开玩笑。还要记住,我对编码还是相当陌生,所以我的代码可能看起来有点奇怪/低效。) var text=document.getElementById(“游戏文本”) var dialog=“要打印的整个文本” var talk=“整个文本都添加到这里,一个字母接一个字母” var charinc=0 函数talky(){ setInterval(函数(){ 如果(字符
var text=document.getElementById(“游戏文本”)
var dialog=“要打印的整个文本”
var talk=“整个文本都添加到这里,一个字母接一个字母”
var charinc=0
函数talky(){
setInterval(函数(){
如果(字符
我在整个代码中多次调用这个函数,将dialog设置为我想要打印的内容,然后调用这个函数。一开始一切都很好,但每次我运行它时,字母的打印速度似乎越来越快。我真的不确定发生了什么,或者如何修复它。我在谷歌上做了一些搜索,但没有找到任何有用的东西。第一次运行它时,每100毫秒运行一次 第二次运行时,有两次间隔,每100毫秒运行一次 等等 由于它们共享相同的变量,您只需使每个变量每100ms增加一次写入输出的速度
要么:
- 完成后调用
clearInterval(…)
- 将全局变量作为参数传递给
,这样它们就不会在多个间隔之间共享talky
- 只需更新变量,而不是再次调用
talky
setInterval
将让它定义的函数在您的情况下每100毫秒运行一次。如果您像您所说的那样多次调用此函数,那么将有几个间隔并行运行,这可能不是您想要的
您可以使用clearInterval
和setInterval
返回的id来清除现有间隔
e、 g
var intervalId=setInterval(function(){console.log('hello,world!'))100;
clearInterval(intervalId);
当您要将charAt
的结果分配给它时,为什么要初始化talk
?每次调用talky()
,您都会调用setInterval()
并注册一个每100毫秒调用一次的函数。您从不存储setInterval
中的句柄。。。不要在它上面使用clearInterval()。。。因此,您最终运行了多个间隔函数,这使得间隔周期看起来缩短了。好的,我现在理解了这个问题,但我不太确定应该如何使用clearInterval。每次我想运行talky时是否应该手动调用它?我应该把它插在talky里面吗?对不起,如果我听起来像个白痴,但我对编码还是有点陌生。(似乎我很容易理解一些概念,而其他的,如间隔,则完全超出我的理解。)“当你完成时”,即作为else
到if(charinc
var text = document.getElementById("gametext")
var dialog = "the entire text you want to print out"
var talk = "The whole text gets added here, letter by letter"
var charinc = 0
function talky() {
setInterval(function(){
if(charinc < dialog.length){
talk = dialog.charAt(charinc++);
text.innerHTML += talk;
}
}, 100);
charinc = 0
}