javascript - setInterval的问题
大家讲道理
大家讲道理 2017-04-11 12:28:07
[JavaScript讨论组]

html结构

    
      li*20
      li*20

中间的2个ul内容完全相同,外部ul默认显示10个li,overflow:hidden.
效果就是每X秒向上滚动1次,刷新一个新的li出来.滚动的过程持续1s,滚动一次的距离是70px.起初想法是100ms7px 但是移动效果稍显卡顿,遂改成 50ms 3.5px ,但因为有了小数点的关系,margin-top的值就变得不可控,几次循环之后会出现比如-283px这种数值(本该是-280px)
下面是js代码:

function move(){
            var _count = 0
            var list = document.getElementById("x");
            var mtop = window.getComputedStyle(list).marginTop;
            mtop = parseInt(mtop);
            mtop <= -1400? mtop=0:mtop=mtop;
            function setp(){
                _count ++
                mtop = mtop - 3.5;
                mt = mtop + "px"
                list.style.marginTop = mt;
                if(_count==20){clearInterval(timer);}
            }
            var timer = setInterval(setp,50);
        }
    setInterval(move,3000)

现在发现问题并不是出在浮点数上,而是setIntetval函数,当焦点一直在当前页面时,是不会出错了,切换到别的页面,过一段时间再切回来,就会出错.
有一个相似的问题:https://segmentfault.com/q/10...
但是我想寻求兼容IE8+,通过原生JS解决的办法.谢谢!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
黄舟

不要累加,每次都计数乘以单条高度呢?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号