无限滚动的小DEMO, 逻辑哪里出错了?

我写个无限滚动的小DEMO, 给scrollLeft赋值时, 到了某个值就会重复给了赋值. 这个是什么原因?.
代码:

<script type="text/javascript">
    var con = document.getElementById("container"),
        uls = document.getElementsByTagName("ul"),
        t = 0, step = 50, temp = 5;
        setInterval(function(){
            t = t + step;
            if (t >= uls[0].offsetWidth) {//uls[0].offsetWidth的值为682
                t = step;
            }
            con.scrollLeft = t;
            console.log(con.scrollLeft);
        },1000)
    </script>

输出:
49.6
100
150
200
232
232
...
232重复很多次.
然后又是
49.6

阅读 1.6k
1 个回答

已经找到答案啦.
container的scrollLeft不可无限增大. 当450的包含框向左滚动了232px后, 682px的内容已经全部显示完成. 此时再给scrollLeft赋值并无意义.
举个例子:

<div id="container"><!-- 450px -->
        <div id="content"><!-- 682px -->
            <ul>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
            </ul>
            <ul>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
                <li><img src="t1.jpg"></li>
            </ul>
        </div>
    </div>
    
    container.scrollLeft = 1000;//得到的还是232. 因为已经到达了临界点.
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题