HTML 5 拖曳功能

摘要:HTML 5 拖曳功能

由於工作需要用到此功能~

而且先前看書有看過~~

所以就拿來實做囉

網路上使用table中的tr元素來實做的範例挺少

所以以table來做為這次的對象

以下為HTML語法內容 

關鍵:要拖曳的元素需設定draggable為true

需在容器元素的部分會使用到ondropondragover兩個事件

拖曳元素會使用到ondragstart事件,用來記錄拖曳的元素id


<table border="1" id="table1" ondrop="drop(event)" ondragover="allowDrop(event)" style="width:100px; height:100px">
    <tr style="height:20px" id="seq-header">>
        <td>標題</td>
        <td>內容</td>
    </tr>
    <tr id="seq-1" draggable="true" ondragstart="drag(event);">
        <td>test2</td>
        <td>2222</td>
    </tr>
</table>
<br />

<table border="1" id="table2" ondrop="drop(event)" ondragover="allowDrop(event)" >
    <tr id="down-header">
        <td>標題</td>
        <td>內容</td>
    </tr>
    <tr draggable="true" id="tr1" ondragstart="drag(event);">
        <td>test1</td>
        <td>11111</td>
    </tr>
</table>

畫面如下

 

javascript語法如下


  function allowDrop(ev) {
        //取消預設的功能
        ev.preventDefault();
    }

    function drag(ev) {
        //將拖移的元素id記錄起來 key:Text
        ev.dataTransfer.setData("Text", ev.target.id);
    }

    function drop(ev) {
        //取消預設的功能
        ev.preventDefault();
        //取得拖移的元素id
        var data = ev.dataTransfer.getData("Text");
        //將拖移的元素放置另一個table
        ev.currentTarget.appendChild(document.getElementById(data));
        
    }

結果如下