Maison > Article > interface Web > Comment utiliser HTML5 pour implémenter la fonctionnalité glisser-déposer pour plusieurs éléments
En utilisant la fonction glisser-déposer de HTML5, nous pouvons faire glisser et déposer des éléments de page HTML. Dans l'article précédent, nous avons présenté le code permettant de glisser-déposer un seul élément. Dans le prochain article, nous présenterons le code qui permet de glisser-déposer plusieurs éléments.
Sans plus tard, regardons directement l'exemple
Exemple 1 : Glissez-déposez plusieurs éléments à l'aide de balises UL
Le code est le suivant :
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; }
Instructions :
Lors du chargement de la page Exécuter la fonction de chargement. Le code suivant dans la fonction de chargement attribue les événements de glisser-déposer au div [Supprimer]. Lorsqu'un élément est glissé vers la zone Supprimer, la fonction onDragOver est appelée, et lorsqu'il est supprimé, la fonction onDrop est appelée.
var delbox = document.getElementById('del'); delbox.addEventListener('dragover', onDragOver, false); delbox.addEventListener('drop', onDrop, false);
Appelez la méthode querySelectorAll pour obtenir l'élément li dans la balise ul. La boucle for traite à plusieurs reprises le tableau d'éléments obtenu et définit l'attribut "déplaçable" de chaque élément sur true. Ce processus le définit comme un objet déplaçable. Il attribue également un événement 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); }
Lorsque vous faites glisser un élément de liste, la fonction onDragStart suivante sera appelée. Appelez la méthode setData de l'objet dataTransfer pour stocker l'ID de l'élément dans l'objet dataTransfer.
function onDragStart(e) { e.dataTransfer.effectAllowed = 'copy'; e.dataTransfer.setData('text', this.id); }
Lorsqu'un élément de la liste est glissé dans la zone de dépôt, la fonction onDragOver suivante sera appelée. Puisque DragOver n’a pas de gestion particulière, il appelle la méthode PreventDefault pour annuler l’événement.
function onDragOver(e) { e.preventDefault(); }
Si l'élément de la liste est supprimé dans la zone glisser-déposer, la fonction onDrop peut être appelée. Appelez la méthode stopPropagation pour annuler le traitement des événements. Ensuite, nous obtenons l'ID de l'objet dataTransfer. En obtenant l'ID, vous pouvez récupérer l'élément déposé dans la zone de dépôt. Appelez la méthode getElementById et récupérez l'objet balisé LI à partir de l'ID. En accédant au nœud parent à l'aide de la propriété parentNode de l'objet LI obtenu, en appelant la méthode removeChild, les éléments de la liste supprimée sont supprimés.
function onDrop(e) { if (e.stopPropagation) e.stopPropagation(); var eid = e.dataTransfer.getData('text'); var elem = document.getElementById(eid); elem.parentNode.removeChild(elem); }
Résultat d'exécution :
Utilisez un navigateur Web pour afficher le fichier HTML ci-dessus. L'effet illustré ci-dessous sera affiché.
Les éléments de la liste en bas de la page peuvent être déplacés. Par exemple, faites glisser l'élément « Penguin » vers la zone de suppression, et il n'y aura alors pas de troisième élément « Penguin » dans la liste des éléments ci-dessous. L'effet spécifique est celui indiqué dans la figure ci-dessous
.
Faites glisser d'autres éléments pour avoir le même effet, et les cinq éléments peuvent être supprimés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!