m0_58818459 2021-09-01 20:24 采纳率: 100%
浏览 80
已结题

实在改不出来了 求各位可怜可怜我帮帮忙吧 运行不了


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        
        <style type="text/css">
            #box1{
                width: 100px;
                height: 100px;
                background-color: pink;
                position: absolute;
            }
            #box2{
                top: 200px;
                left: 200px;
                width: 100px;
                height: 100px;
                background-color: yellow;
                position: absolute;
            }
        </style>
    <script type="text/javascript">
        window.onload = function(){
            //拖拽box1
            //流程:
            //1.按住  被拖拽元素开始被拖拽      onmousedown
            //2.移动  被拖拽元素随鼠标运动      onmousemove
            //3.松开  被拖拽元素固定在当前位置  onmouseup
            
            //获取box1
            var box1 = document.getElementById("box1");
            var box2 = document.getElementById("box2");
            //开启box1的拖拽
            drag(box1);
            drag(box2);

                //提取一个专门用来设置拖拽的函数                //参数:开启拖拽的元素                                function drag(obj){                    //为obj绑定一个鼠标按下事件                    //当鼠标在被拖拽元素上按下时,开始拖拽  onmousedown                    obj.onmousedown = function(event){                        //IE8可以使用“强盗”捕获setCapture()并在鼠标松开事件中取消捕获setCapture()                        //只有IE支持,但是火狐不报错,而chrome会报错,即需要判断语句判断是否支持setCapture(),支持使用,不支持则不使用                        // if(box1.setCapture){                        //     box1.setCapture();                        // }                        obj.setCapture && obj.setCapture();                        event = event || window.event;                        //div的偏移量                         //    鼠标.clientX - 元素.offsetLeft                        //    鼠标.clientY - 元素.offsetTop                        var ol = event.clientX - obj.offsetLeft;                        var ot = event.clientY - obj.offsetTop;                    }
                    //为document绑定一个onmousemove事件
                    document.onmousemove = function(event){
                        event = event || window.event;
                        //当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
                        //获取鼠标的坐标
                        var left = event.clientX - ol;
                        var top = event.clientY - ot;
                        //修改obj的位置
                        obj.style.left = left+"px";
                        obj.style.top = top+"px";
                        
                    };

                        //当鼠标松开时,被拖拽元素固定在当前位置  onmouseup
                        //document 是因为 obj 一旦被其他的覆盖就不会被固定
                        document.onmouseup = function(){
                            //取消document的onmousemove事件
                            document.onmousemove = null;
                            //取消document的onmouseup事件
                            //因为动作行为结束了留着该事件无意义
                            document.onmouseup = null;
                            //IE8可以使用“强盗”捕获setCapture()并在鼠标松开事件中取消捕获setCapture()
                            obj.releaseCapture && obj.releaseCapture();
                        }
</head>
<body>
    <div id="box1"></div>
    <div id="box2"></div>
</body>
```

```

  • 写回答

2条回答 默认 最新

  • 关注

    什么问题?请把问题详细描述一下,
    把你的代码用代码段</>的文本形式发一下,我们才能知道原因,好为你解答。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            
            <style type="text/css">
                #box1{
                    width: 100px;
                    height: 100px;
                    background-color: pink;
                    position: absolute;
                }
                #box2{
                    top: 200px;
                    left: 200px;
                    width: 100px;
                    height: 100px;
                    background-color: yellow;
                    position: absolute;
                }
            </style>
        <script type="text/javascript">
            window.onload = function(){
                //拖拽box1
                //流程:
                //1.按住  被拖拽元素开始被拖拽      onmousedown
                //2.移动  被拖拽元素随鼠标运动      onmousemove
                //3.松开  被拖拽元素固定在当前位置  onmouseup
                
                //获取box1
                var box1 = document.getElementById("box1");
                var box2 = document.getElementById("box2");
                //开启box1的拖拽
                drag(box1);
                drag(box2);
     
                    //提取一个专门用来设置拖拽的函数                
                    //参数:开启拖拽的元素                                
                function drag(obj){                    
                    //为obj绑定一个鼠标按下事件                    
                    //当鼠标在被拖拽元素上按下时,开始拖拽  onmousedown                    
                    obj.onmousedown = function(event){                        
                        //IE8可以使用“强盗”捕获setCapture()并在鼠标松开事件中取消捕获setCapture()                        
                        //只有IE支持,但是火狐不报错,而chrome会报错,即需要判断语句判断是否支持setCapture(),支持使用,不支持则不使用                        
                        // if(box1.setCapture){                        
                        //     box1.setCapture();                        
                        // }                        
                        obj.setCapture && obj.setCapture();                        
                        event = event || window.event;                        
                        //div的偏移量                         
                        //    鼠标.clientX - 元素.offsetLeft                        
                        //    鼠标.clientY - 元素.offsetTop                        
                        var ol = event.clientX - obj.offsetLeft;
                        var ot = event.clientY - obj.offsetTop;
                        //为document绑定一个onmousemove事件
                        document.onmousemove = function(event){
                            event = event || window.event;
                            //当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
                            //获取鼠标的坐标
                            var left = event.clientX - ol;
                            var top = event.clientY - ot;
                            //修改obj的位置
                            obj.style.left = left+"px";
                            obj.style.top = top+"px";
                            
                        };
     
                        //当鼠标松开时,被拖拽元素固定在当前位置  onmouseup
                        //document 是因为 obj 一旦被其他的覆盖就不会被固定
                        document.onmouseup = function(){
                            //取消document的onmousemove事件
                            document.onmousemove = null;
                            //取消document的onmouseup事件
                            //因为动作行为结束了留着该事件无意义
                            document.onmouseup = null;
                            //IE8可以使用“强盗”捕获setCapture()并在鼠标松开事件中取消捕获setCapture()
                            obj.releaseCapture && obj.releaseCapture();
                        }
                    }
                }
            }
        </script>
    </head>
    <body>
        <div id="box1"></div>
        <div id="box2"></div>
    </body>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月10日
  • 已采纳回答 9月2日
  • 修改了问题 9月1日
  • 修改了问题 9月1日
  • 展开全部

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程