扫码关注官方订阅号
打字机效果
走同样的路,发现不同的人生
问题出在lp()函数中
if(value>0){ writecontext.innerHTML=context.slice(0,contextLength--)+'_' lp() }else{...}
此处判断的是value但是操作的是contextLength,所以导致lp()函数死循环。
解释下删除两次的原因:主要是slice()方法
'string'.slice(0,n);
当n是正数时按照正常顺序执行;当n是负数时,执行时n会被替换成字符串长度+n,具体查看MDN。所以,第一次执行lop()字符串删除到0之后,contextLength继续减一,导致了视觉上删除了两次
你写的lp函数其实是无限循环函数来的,需要把lp函数下的contextLength--改为value--,且需要把value > 0改为value >= 0
lp
contextLength--
value--
value > 0
value >= 0
var context='这个程序是想先输逐个出所有文字,三秒钟以后逐个删除所有文字,但是运行以后发现删除到头又会重新删除一遍,请大神帮忙看看,谢谢!'; var contextLength=Number(0) var writecontext=document.querySelector('#main') var t1,t2; t1 = setInterval('write()',100); function write(){ if(contextLength<=context.length){ writecontext.innerHTML=context.slice(0,contextLength++)+'_' } else{ clearInterval(t1); setTimeout(function(){ t2 = setInterval('clear()',100); },1000); } } function clear(){ if(contextLength>=0){ writecontext.innerHTML=context.slice(0,contextLength--)+'_' }else{ clearInterval(t2); } }
把字存成一个数组,然后对数组实现增删
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
问题出在lp()函数中
此处判断的是value但是操作的是contextLength,所以导致lp()函数死循环。
解释下删除两次的原因:主要是slice()方法
'string'.slice(0,n);当n是正数时按照正常顺序执行;当n是负数时,执行时n会被替换成字符串长度+n,具体查看MDN。
所以,第一次执行lop()字符串删除到0之后,contextLength继续减一,导致了视觉上删除了两次
你写的
lp函数其实是无限循环函数来的,需要把lp函数下的contextLength--改为value--,且需要把value > 0改为value >= 0把字存成一个数组,然后对数组实现增删