标题:js完美实现鼠标拖拽
只看楼主
awl805
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:161
专家分:664
注 册:2012-11-6
 问题点数:0 回复次数:2 
js完美实现鼠标拖拽
程序代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.">
<html xmlns="http://www." >
<head>
    <title>无标题页</title>
   
    <script type="text/javascript">
        var X,Y;
        function tuo(event){
            var e=event||window.event;
            X=e.clientX;
            Y=e.clientY;
            document.getElementById("xx").setAttribute("able",true);//自定义属性,用于是否可以拖拽
            document.getElementById("xx").setAttribute("onmouseup","_tuo();"); //注册鼠标放开事件
            document.getElementById("xx").setAttribute("onmousemove","test(event)");    //注册鼠标移动事件        
            document.getElementById("xx").setAttribute("onmousedown",""); //移除mousedown事件,防止在拖拽时一直执行
            document.getElementById("x").value=X;
            document.getElementById("y").value=Y;
        }
        function _tuo(){
            document.getElementById("xx").setAttribute("able",false);
            document.getElementById("xx").setAttribute("onmousemove","");
            setTimeout("document.getElementById('xx').setAttribute('onmousedown','tuo(event)');",100);//防止在放开鼠标时因鼠标抖动而导致执行了mousedown事件,所以要延时开放
            document.getElementById("x").value="x";
            document.getElementById("y").value="y";
        }
        function test(event){
            var e=event||window.event;
            if(document.getElementById("xx").attributes["able"].nodeValue){ //必须在可拖拽的状态才执行拖拽
                document.getElementById("xx").style.left = document.getElementById("xx").offsetLeft+(e.clientX-X);
                document.getElementById("xx").style.top = document.getElementById("xx").offsetTop+(e.clientY-Y);
                document.getElementById("k").value=e.clientX;
               
            }
            X=e.clientX;
            Y=e.clientY;
            document.getElementById("x").value=X;
            document.getElementById("y").value=Y;
        }
    </script>
</head>
<body>
    <div style="position:absolute; width:100%; height:100%; left:0px; top:0px;">
    <div id="xx" style="position:absolute; width:100px; height:100px; top:100px; left:100px; background-color:Gray;"
         onmousedown="tuo(event);" onmouseout="_tuo(event);">
   
    </div>
    <input type="text" id="x" value="x" />
    <input type="text" id="y" value="y" />
    <input type="text" id="k" value="k" />
    </div>
</body>
</html>


[ 本帖最后由 awl805 于 2012-12-21 22:34 编辑 ]
搜索更多相关主题的帖子: 鼠标 javascript title 
2012-12-21 22:27
yms123
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
测试了一下IE无问题,火狐你这个代码有问题,感觉你这个用JQuery实现更能兼容浏览器吧?
2013-01-04 12:51
awl805
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:161
专家分:664
注 册:2012-11-6
得分:0 
我忘了用火狐去测试。。jquery这个库我很少用,不怎么清楚
2013-01-04 13:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-392864-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.348969 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved