站長資訊網
        最全最豐富的資訊網站

        如何使用HTML5實現多個元素的拖放功能

        通過使用HTML5的拖放功能我們可以拖放HTML頁面元素。在上一篇文章中,我們介紹了有關于可以拖放單個元素的代碼。在接下來的這篇文章中,我們將來介紹關于允許拖放多個元素的代碼。

        如何使用HTML5實現多個元素的拖放功能

        話不多說,我們直接看示例

        示例一:使用UL標記拖放多個元素

        代碼如下:

        ListDragDrop.html

        <!DOCTYPE html> <html> <head>     <meta charset="utf-8" />     <title></title>   <link rel="stylesheet" href="ListDragDrop.css"/>   <script>     function load() {             var delbox = document.getElementById('del');       delbox.addEventListener('dragover', onDragOver, false);       delbox.addEventListener('drop', onDrop, false);             var elems = document.querySelectorAll('ul#list1 > li');             for (var i = 0; i < elems.length; i++) {         el = elems[i];         el.setAttribute('draggable', 'true');         el.addEventListener('dragstart', onDragStart, false);       }     }     function onDragStart(e) {       e.dataTransfer.effectAllowed = 'copy';       e.dataTransfer.setData('text', this.id);     }     function onDragOver(e) {       e.preventDefault();     }     function onDrop(e) {       if (e.stopPropagation) e.stopPropagation();             var eid = e.dataTransfer.getData('text');             var elem = document.getElementById(eid);       elem.parentNode.removeChild(elem);     }   </script> </head> <body onload="load();">    <div id="del">刪除</div>     <ul id="list1">       <li id="1">海豚</li>       <li id="2">鯨魚</li>       <li id="3">企鵝</li>       <li id="4">北極熊</li>       <li id="5">雪狐</li>     </ul>     </ul> </body> </html>

        ListDragDrop.css

        #del{   width:120px;     height:60px;     border: solid 2px #ff6a00;   } ul#list1 > li {   display: block;     width: 150px;     border: 1px solid #808080;   }

        說明:

        加載頁面時執行加載功能。load函數中的以下代碼將dragover和drop事件分配給[Delete]的div。當元素被拖動到Delete框時,會調用onDragOver函數,當它被刪除時,會調用onDrop函數。

        var delbox = document.getElementById('del');   delbox.addEventListener('dragover', onDragOver, false);   delbox.addEventListener('drop', onDrop, false);

        調用querySelectorAll方法以獲取ul標記中的li元素。for循環反復處理中獲取的元素數組,并將每個元素的“draggable”屬性設置為true。此過程將其設置為可拖動對象。它還分配了一個dragstart事件。

        var elems = document.querySelectorAll('ul#list1 > li');   for (var i = 0; i < elems.length; i++) {     el = elems[i];     el.setAttribute('draggable', 'true');     el.addEventListener('dragstart', onDragStart, false);   }

        拖動列表項時,將調用以下onDragStart函數。調用dataTransfer對象的setData方法以在dataTransfer對象中存儲元素的ID。

        function onDragStart(e) {       e.dataTransfer.effectAllowed = 'copy';       e.dataTransfer.setData('text', this.id);     }

        當在拖放區域中拖動列表中的項目時,將調用以下onDragOver函數。由于DragOver沒有特別的處理,因此它調用PreventDefault方法來取消事件。

        function onDragOver(e) {       e.preventDefault();     }

        如果列表的項目在拖放區域內被刪除,則可以調用onDrop函數。調用stopPropagation方法取消事件的處理。然后,我們從dataTransfer對象中獲取ID。通過取得ID,您可以獲得丟棄區域中丟棄的元素。調用getElementById方法并從ID中獲取LI標記的對象。通過使用獲取的LI對象的paerntNode屬性訪問父節點,調用removeChild方法,刪除被丟棄的列表的項目。

        function onDrop(e) {       if (e.stopPropagation) e.stopPropagation();       var eid = e.dataTransfer.getData('text');       var elem = document.getElementById(eid);       elem.parentNode.removeChild(elem);     }

        運行結果:

        使用Web瀏覽器顯示上述HTML文件。將顯示如下所示的效果。

        如何使用HTML5實現多個元素的拖放功能

        可以拖動頁面底部列表中的項目。比如拖動“企鵝”這一項,將其拖動到刪除區域,然后下面列表項中就沒有第三項“企鵝”了,具體效果如下圖所示

        如何使用HTML5實現多個元素的拖放功能

        如何使用HTML5實現多個元素的拖放功能

        拖動其他項都是一樣的效果,五項都可以刪除。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品WWW久久久久久| 国产精品亚韩精品无码a在线 | 国产精品热久久毛片| 中文精品一卡2卡3卡4卡| 亚洲国产主播精品极品网红| 91精品国产品国语在线不卡 | 91精品久久久久久无码| 久久99精品久久久久久久久久| 亚欧洲精品在线视频免费观看| 国产成人久久精品麻豆一区| 国产精品久久毛片完整版| 久久亚洲国产成人精品性色| 中文字幕精品无码久久久久久3D日动漫 | 亚洲七七久久精品中文国产| 国产精品自在线拍国产电影| 久久青草国产精品一区| 99久久99久久精品免费看蜜桃| 久久久精品国产sm调教网站| 永久免费精品影视网站| 亚洲爆乳精品无码一区二区| 久久精品无码av| 狠狠色伊人久久精品综合网| 国产精品区AV一区二区| 国产精品色视频ⅹxxx| 99久久99久久精品国产| 91久久精品国产成人久久| 桃花岛精品亚洲国产成人| 精品午夜久久福利大片| 精品国产欧美另类一区| 日韩精品久久久久久| 久久久久国产精品| 亚洲欧美日韩精品久久| 久久国产精品一区二区| 久久er国产精品免费观看2| 国产精品久久久久久久久免费 | 久久发布国产伦子伦精品| 亚洲精品国产美女久久久| 婷婷国产成人精品视频| 久久精品无码午夜福利理论片| 国产午夜福利精品久久2021| 99久久99这里只有免费费精品|