1. 程式人生 > >JS錯誤記錄 - 按左右箭頭div移動、一串div跟著滑鼠移動

JS錯誤記錄 - 按左右箭頭div移動、一串div跟著滑鼠移動

 

本次練習錯誤總結:

1. div跟著使用者操作而移動,首先必須要絕對定位,否則無法移動。

2. if條件語句裡面是雙等號,不是單等號(賦值)。

3. 座標值沒有Right,只能offsetLeft 加減。

//oDiv.style.right = oDiv.offsetRight + 10 + 'px';

 

 

<style>
    div{
        width: 100px;
        height: 100px;
        background-color: #ccc;
        /* border: 1px solid #000; 
*/ position:absolute; /* 沒寫絕對定位。。。。。。div不能移動。。。 */ } </style> <script> document.onkeydown = function(ev){ var oEvent = ev||event; var oDiv = document.getElementById('div1'); // if(oEvent.keyCode = 39) //賦值是一個等號,if裡面是雙等號 == if
(oEvent.keyCode == 39) { oDiv.style.left = oDiv.offsetLeft + 10 + 'px'; } else if(oEvent.keyCode == 37) { //oDiv.style.right = oDiv.offsetRight + 10 + 'px'; //沒有右邊值。。。。 只能offsetLeft 加減。 oDiv.style.left = oDiv.offsetLeft - 10 + 'px'; } };
</script>

 

function getPos(ev) {
            // var oEvent = ev||event;   這裡是否需要這個變數?   不需要
            var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
            var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft;

            return { x:ev.clientX + scrollLeft, y:ev.clientY + scrollTop}
        };

        document.onmousemove = function (ev) {
            var oEvent = ev||event;
            var pos = getPos(oEvent);
            var aDiv = document.getElementsByTagName('div');

            for(var i=aDiv.length-1; i>0; i--){
                aDiv[i].style.left = aDiv[i-1].offsetLeft + 'px';
                aDiv[i].style.top= aDiv[i-1].offsetTop + 'px';
            }

            aDiv[0].style.left = pos.x + 'px';
            aDiv[0].style.top = pos.y + 'px';
        };