Saya tertanya-tanya sama ada/bagaimana saya boleh menyimpan kedudukan yang saya alihkan div boleh seret ke atas meja, jadi apabila halaman dimuat semula ia akan kembali ke tempat ia berhenti (dari pangkalan data MySQL).
Saya telah membaca beberapa artikel berkaitan, tetapi semuanya tentang menggunakan jquery (acara, ui) dengan AJAX.
Ini kod saya:
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>
Ini mungkin jawapan yang terlalu rumit. Tetapi saya rasa cara terbaik ialah menyimpan
module
对象的数组。每个module
都有一个position
属性,每次移动模块时都需要更新该属性。您还可以使用data
atribut html dalam JavaScript untuk menyimpan kedudukan elemen itu sendiri pada elemen (https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes ). Ini kod saya:Javascript:
HTML:
Untuk mengemas kini pangkalan data, anda boleh mengisih tatasusunan mengikut nilai
write
数据库调用。然后每次加载页面时,只需根据position
setiap kali anda mengalihkan modul. Harap ini membantu!