站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        如何使用HTML5實現(xiàn)多個元素的拖放功能

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

        如何使用HTML5實現(xiàn)多個元素的拖放功能

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

        示例一:使用UL標(biāo)記拖放多個元素

        代碼如下:

        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;   }

        說明:

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

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

        調(diào)用querySelectorAll方法以獲取ul標(biāo)記中的li元素。for循環(huán)反復(fù)處理中獲取的元素數(shù)組,并將每個元素的“draggable”屬性設(shè)置為true。此過程將其設(shè)置為可拖動對象。它還分配了一個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);   }

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

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

        當(dāng)在拖放區(qū)域中拖動列表中的項目時,將調(diào)用以下onDragOver函數(shù)。由于DragOver沒有特別的處理,因此它調(diào)用PreventDefault方法來取消事件。

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

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

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

        運行結(jié)果:

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

        如何使用HTML5實現(xiàn)多個元素的拖放功能

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

        如何使用HTML5實現(xiàn)多個元素的拖放功能

        如何使用HTML5實現(xiàn)多個元素的拖放功能

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

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 亚洲精品无码mv在线观看网站| 久久青青草原精品国产| 久久久久九九精品影院| 99国产欧美久久久精品蜜芽| 日韩精品无码永久免费网站| 欧美国产亚洲精品高清不卡| 欧美精品亚洲精品日韩传电影| 国产精品亚洲欧美大片在线观看| 99久久精品午夜一区二区| 亚洲高清国产拍精品青青草原| 国产精品成人观看视频| 国产精品自拍一区| 久久综合精品国产二区无码| 欧美精品色精品一区二区三区| 亚洲欧洲国产精品你懂的| 99精品视频3| 久久久久久国产精品免费无码 | 亚洲精品无码鲁网中文电影| 国产线视频精品免费观看视频| 桃花岛精品亚洲国产成人| 国产国产成人精品久久| 精品久久久久久久久午夜福利| 亚洲av日韩av天堂影片精品| 亚洲爆乳无码精品AAA片蜜桃| 精品久久久久久无码人妻蜜桃| 国产成人精品久久综合| 天天爽夜夜爽精品视频app| 嫩草影院久久国产精品| 国产精品视频免费观看| 国产精品1024香蕉在线观看 | 国产乱人伦偷精品视频| 在线欧美v日韩v国产精品v| 久久99国产精品一区二区| 99精品高清视频一区二区| 国产精品综合色区在线观看| 欧洲精品99毛片免费高清观看| 亚洲精品无码MV在线观看| 综合在线视频精品专区| 亚洲欧美日韩久久精品第一区| 中日韩产精品1卡二卡三卡| 亚洲国产精品第一区二区三区|