为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个setInterval只在手机端执行了一次

为什么这个setInterval只在手机端执行了一次

DIEA 2018-08-07 09:09:47
实现上下滚动的跑马灯效果, 代码如下:var scroll = function() {    //选择列表中的第一个元素    var elem = document.querySelectorAll('.infolist li')[0];      //记录其高度    var height = elem.offsetHeight;     setTimeout(function callMeAnony() {        //如果高度不为0        if(height){            //减少元素的高度以便让后面的元素顶上来, 同时再设定一个Timeout直到元素的高度为0            height -= 3;             elem.style.height = height + 'px';            setTimeout(callMeAnony, 200);          }else{            //如果元素的高度已经为0, 则将元素挪到最后一位并恢复原来的高度            elem.parentNode.appendChild(elem);             elem.style.height = elem.previousElementSibling.offsetHeight + 'px';         }    }, 200);}; //每3秒执行一次setInterval(scroll, 3000); 这段代码在电脑上执行得很好, 但在手机端就出问题了。 在微信里动画只在3秒后执行了一次就停在那里了。求解!已解决, 其原因是if(height){这段在PC端height是30, 但在手机端就不一定了。由于height以3递减, 这会导致height直接跳过height=0, 一直执行下去解决方案很简单, if(height >= 0){既可.
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

写成
setInterval('scroll()',3000);
试试

查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 757 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信