JS错误记录

错误总结:

1. var disX = 0;   现在window.onload里声明变量,而不是在事件oDiv.onmousedown里面声明并赋值。

对于这个还不是很明白。

2. onmousedown事件的主体是oDiv,不是整个窗口。

3. if ... else if ...   两个花括号的中间不可以写分号 ; 。

4. oDiv.style.left = l + 'px';    left 值有px。

5. 写法错误。  可视窗的宽度:  document.documentElement.clientWidth

if(l<0)
            {
                l = 0;
            }
            // if(l>oEvent.clientWidth - oDiv.offsetWidth)
            else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)
            {
                // l = oEvent.clientWidth - oDiv.offsetWidth

                l=document.documentElement.clientWidth-oDiv.offsetWidth;
            };
<script>

    window.onload = function()
    {
        var oDiv = document.getElementById('div1');

        var disX = 0; // 为什么在这里声明, 且声明变量为 0 ?
        var disY = 0;

        oDiv.onmousedown = function(ev) 
        // 不是点击整个窗口时拖拽, 是点击div的时候拖拽
        {
            var oEvent = ev || event;
            
            disX = oEvent.clientX - oDiv.offsetLeft;
            disY = oEvent.clientY - oDiv.offsetTop;

            //window.onmousemove = function(ev)  // window.onmouseove 和 document.onmousemove 区别?
            document.onmousemove=function (ev)
            {
                var oEvent = ev || event;
                var l = oEvent.clientX - disX   // 变量表示div位置的值
                var t = oEvent.clientY - disY

                // 画图,分成 左边顶格, 右边顶格 两种情况考虑。
                if(l<0)
                {
                    l=0;
                }    //;  // if 和 else if之间的语句不可以写分号 ; 
                
                else if(l>document.documentElement.clientWidth - oDiv.offsetWidth)
                {
                    l = document.documentElement.clientWidth - oDiv.offsetWidth;
                };

                if(t<0)
                {
                    t=0;
                }
                else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)
                {
                    t=document.documentElement.clientHeight-oDiv.offsetHeight;
                }

                oDiv.style.left = l + 'px'; // left 值有px
                oDiv.style.top =  t + 'px';
            };

            document.onmouseup=function ()
            {
                document.onmousemove=null;
                document.onmouseup=null;
            };

            return false; // 阻止默认事件,解决火狐浏览器拖拽空div的bug
        };    
    };
    </script>
    <script>
    window.onload = function()
    {
      var oDiv = document.getElementById('div1');
      var disX = 0;
      var disY = 0;

      oDiv.onmousedown = function(ev)
      {
          var oEvent = ev||event;
          
          disX = oEvent.clientX - oDiv.offsetLeft;
          disY = oEvent.clientY - oDiv.offsetTop;

          document.onmousemove = function(ev)
          {
            var oEvent = ev||event;
            var l = oEvent.clientX - disX;
            var t = oEvent.clientY - disY;

            if(l<0)
            {
                l = 0;
            }
            // if(l>oEvent.clientWidth - oDiv.offsetWidth)
            else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)
            {
                // l = oEvent.clientWidth - oDiv.offsetWidth

                l=document.documentElement.clientWidth-oDiv.offsetWidth;
            };

            if(t<0)
            {
                t = 0;
            }
            else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)
            {
                t=document.documentElement.clientHeight-oDiv.offsetHeight;
            }

            // if(t>oEvent.clientHeight - oDiv.offsetHeight)
            // {
            //     l = oEvent.clientHeight - oDiv.offsetHeight
            // };

            oDiv.style.left = l + 'px';
            oDiv.style.top = t + 'px';
          };

          document.onmouseup = function()
          {
              document.onmousemove = null;
              document.onmouseup = null;
          };

          return false;
      };
    };
    </script>
原文地址:https://www.cnblogs.com/carpenterzoe/p/10214067.html