实现的效果是,让图片在div中左右滑动,但是目前滑动到右端就停止了。求教
html部分<div style="width:100px;height:100px;overflow:auto;" id="d1">
        <table>
            <tr>
                <td><img src="imgs/1.jpg" /></td>
                <td><img src="imgs/2.jpg" /></td>
                <td><img src="imgs/3.jpg" /></td>
                
            </tr>
        </table>
    </div>js部分var direct = 50;
        function MoveDiv()
        {
            var d1 = document.getElementById("d1");
            var d1ScrollLeft = d1.scrollLeft + direct;
            
            
            if (d1ScrollLeft > d1.scrollWidth || d1ScrollLeft < 0)
            {
                d1.scrollLeft = d1.scrollWidth;
                direct = (-1) * direct;
            }
            else
            {
                d1.scrollLeft = d1ScrollLeft
            }
            window.setTimeout("MoveDiv()", 500);
        }
跟踪发现div的scrollWidth值是400多,可div的scrollLeft值到399就停止不再增长了

解决方案 »

  1.   

    你要左右滑动那应该是位置的变化吧。
    <div style="position:absolute;left:100px;top:100px;overflow:auto;" id="d1">然后,通过,改变left值来实成左右移动呀。
      

  2.   

    2楼,我的意思是在div中放置一个table,table的宽度比div的宽度要大,控制div的滚动条来显示table的所有内容。
    还是多谢2楼。
      

  3.   

    window.setInterval("MoveDiv()", 500);
      

  4.   

    是 d1.scrollLeft 与 d1.scrollWidth 值的问题当到达最右边的时候,d1.scrollLeft + 最后一张图片的宽 = d1.scrollWidth;明白了上面这一点就好解决了,不过LZ你写的代码……我给你改了一下
    <div style="width:243px;height:235px;overflow: hidden; border: #666666 solid 1px;" id="d1">
    <table>
    <tr>
    <td><img src="try/image/01.jpg" /></td>
    <td><img src="try/image/02.jpg" /></td>
    <td><img src="try/image/03.jpg" /></td>
    </tr>
    </table>
    </div><script type="text/javascript">
    var direct = 50;
    var flag = false; //false 向左, true向右
    function MoveDiv() {
    var d1 = document.getElementById("d1");
    var imgObj = d1.getElementsByTagName("img");

    //var d1ScrollLeft = d1.scrollLeft + direct;

    /*if (d1ScrollLeft > d1.scrollWidth || d1ScrollLeft < 0) {
    d1.scrollLeft = d1.scrollWidth;
    direct = (-1) * direct;
    }
    else {
    direct = Math.abs(direct);
    d1.scrollLeft = d1ScrollLeft
    }*/

    if(!flag) {
    d1.scrollLeft += direct;
    if(d1.scrollLeft == d1.scrollWidth-imgObj[imgObj.length-1].width) flag = true;
    }
    else {
    d1.scrollLeft -= direct;
    if(d1.scrollLeft == 0) flag = false;
    }
    window.setTimeout("MoveDiv()", 500);
    }
    MoveDiv();
    </script>