亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

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

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

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

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

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

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

    代碼如下:

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

    說明:

    加載頁面時(shí)執(zhí)行加載功能。load函數(shù)中的以下代碼將dragover和drop事件分配給[Delete]的div。當(dāng)元素被拖動(dòng)到Delete框時(shí),會(huì)調(diào)用onDragOver函數(shù),當(dāng)它被刪除時(shí),會(huì)調(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ù)處理中獲取的元素?cái)?shù)組,并將每個(gè)元素的“draggable”屬性設(shè)置為true。此過程將其設(shè)置為可拖動(dòng)對(duì)象。它還分配了一個(gè)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);   }

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

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

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

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

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

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

    運(yùn)行結(jié)果:

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

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

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

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

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

    拖動(dòng)其他項(xiàng)都是一樣的效果,五項(xiàng)都可以刪除。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)