其他分享
首页 > 其他分享> > js拖动事件

js拖动事件

作者:互联网

                         


 

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>拖动事件</title>

         <style>

                  .droptarget {

                          float:left;

                          width:100px;

                          height:35px;

                          margin:15px;

                          padding:10px;

                          border:1px solid #aaaaaa;

                  }

    </style>

</head>

<body>

         <p>在两个矩形框中来回拖动 p 元素:</p>

    <divclass="droptarget" οndragοver="allowDrag(event)"οndrοp="drop(event)">

        <p id="dragtarget"draggable="true" οndragstart="dragStart(event)"οndrag="dragging()">拖动我!</p>

    </div>

    <divclass="droptarget" οndragοver="allowDrag(event)"οndrοp="drop(event)"></div>

    <pstyle="clear:both;"><strong>注意:</strong>Internet Explorer 8 及更早 IE 版本或 Safari 5.1 及更早版本的浏览器不支持 drag 事件。</p>

    <pid="demo"></p>

    <script>

        //开始拖动p标签被拖拽的元素必须设置draggable="true"

        functiondragStart(event){

            var event =event||window.event

            //在进行拖放操作的时候,dataTransfer对象可以用来保存被拖动的数据。它可以保存一项或多项数据、一种或多数数据类型。通俗一点讲,就是可以通过它来传输被拖动的数据,以便在拖拽结束的时候,对数据进行其他的操作。

           event.dataTransfer.setData("text",event.target.id);

        }

        //拖拽过程中

        function dragging(){

           document.getElementById("demo").innerHTML = "p元素正在被拖拽!";

        }

        //拖动元素在放置目标上

        functionallowDrag(event){

            //阻止默认事件

           event.preventDefault();

        }

        //拖动元素放在目标区域时

        function drop(event){

           console.log(event);

            //获取被拖动元素id

            var data =event.dataTransfer.getData("text");

            //在目标区域添加元素

           event.target.appendChild(document.getElementById(data));

           document.getElementById("demo").innerHTML = "p元素已被拖拽!";

        }

    </script>

</body>

</html>


 

效果:

标签:dataTransfer,拖动,元素,拖拽,getElementById,事件,js,event
来源: https://blog.csdn.net/yanjin_xiaoxiao/article/details/121317626