Je me demande si/comment je peux stocker la position vers laquelle j'ai déplacé le div déplaçable sur la table, donc lorsque la page se rechargera, elle reviendra là où elle s'était arrêtée (à partir de la base de données MySQL).
J'ai lu quelques articles connexes, mais ils concernaient tous l'utilisation de jquery (événements, ui) avec AJAX.
Voici mon code :
var p = document.getElementsByTagName('p'); var choice = document.getElementsByClassName('choice'); var dragItem = null; for(var i of p){ i.addEventListener('dragstart', dragStart); i.addEventListener('dragend', dragEnd); } function dragStart(){ dragItem = this; setTimeout(()=>this.style.display = "none", 0); } function dragEnd(){ setTimeout(()=>this.style.display = "block", 0); dragItem = null; } for(j of choice){ j.addEventListener('dragover', dragOver); j.addEventListener('dragenter', dragEnter); j.addEventListener('dragleave', dragLeave); j.addEventListener('drop', Drop); } function Drop(){ this.append(dragItem); } function dragOver(e){ e.preventDefault(); this.style.border = "2px dotted cyan"; } function dragEnter(e){ e.preventDefault(); } function dragLeave(e){ this.style.border = "none"; }
section{ width: 1000px; height: 360px; margin: 100px auto; display: flex; justify-content: space-around; } h1{ text-align: center; } div{ width: 200px; height: 90%; padding: 20px; margin: 10px; background: #fafafa; box-sizing: border-box; } p{ font-weight: bold; border-radius: 5px; padding: 5px; color: white; background: red; } table, th, td { border:1px solid black; } button{ width: 100px; height: 15px; padding: 15px; margin: 10px; background: gray; box-sizing: border-box; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>test drag & drop </title> </head> <body> <h1> it's just a test for js </h1> <section> <div2> <table style="width:100%"> <tr> <th>time</th> <th>DIM</th> <th>LUN</th> </tr> <tr> <td>8:00 - 9:00</td> <td><div class="choice"></div> S1-1</td> <td><div class="choice"></div>S1-2</td> </tr> <tr> <td>9:00 - 10:00</td> <td><div class="choice"></div>S2-1</td> <td><div class="choice"></div>S2-2</td> </tr> </table> <button>save</button> </div2> <div class="choice"> <p draggable="true">MODULE 1</p> <p draggable="true">MODULE 2</p> <p draggable="true">MODULE 3</p> <p draggable="true">MODULE 4</p> <p draggable="true">MODULE 5</p> </div> </section> </body> </html>
Cela peut être une réponse trop compliquée. Mais je pense que le meilleur moyen est de stocker
module
对象的数组。每个module
都有一个position
属性,每次移动模块时都需要更新该属性。您还可以使用data
les attributs html en JavaScript pour stocker la position de l'élément lui-même sur l'élément (https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes ). Voici mon code :Javascript:
HTML :
Pour mettre à jour la base de données, vous pouvez simplement trier le tableau par
write
数据库调用。然后每次加载页面时,只需根据position
valeur à chaque fois que vous déplacez le module. J'espère que cela t'aides!