実現したいこと
複数の要素を一つずつドラッグアンドドロップさせることです
例えば画像の一森純を左の空欄に入れて
下記のような状態にしております
ところが一回目のドロップエンドを終えると二回目のドロップスタートの際、一回目の要素を含めてドロップされてしまいます。
ですので三回目、四回目とだんだん下記のように一度に複数の要素がドロップされていきます。
|:--|:--:|--:| |||| ### 前提 前提として要素をひとつずつとりだしたいため、ドロップエンドをしたら 前回分の要素をドロップさせたくない(ドラッグした分だけをドロップしたいです) ### 該当のソースコード const players_list = document.getElementById("players_list"); for(let i=0;i< players.length; i++) { if(i%2==1) { const player = document.createElement('div'); player.classList.add('ran'); player.textContent = players[i]; players_list.appendChild(player); } } const urawa = document.getElementById('team_box'); let ct = 0; function teams_box(e ,list, team) { e.addEventListener('click',() => { if(ct == 0) { list = document.createElement('div'); list.classList.add('teams_ran'); document.body.appendChild(list); listというdivに要素をドロップ ct = 1; //------------------------------ const player = document.querySelectorAll('.ran'); //ドラッグ対象 const f_players = [].slice.call(player); for(const player of f_players) { player.setAttribute('draggable','true'); player.addEventListener('dragstart',dragstart) function dragstart() { setTimeout(() => { player.className = 'invisible'; }, 0); player.addEventListener('dragend', dragend); let in_p = player; list.addEventListener('drop',() => { list.appendChild(in_p); }); } function dragend() { player.className = 'ran'; player.removeEventListener('dragend', dragend); ・・・ ① } list.addEventListener('dragover', dragover); function dragover(e) { e.preventDefault(); } } ### 試したこと player.removeEventListener('dragend', dragend); ・・・ ① 上記をdragend関数で使うことによって強制的に、一回ごとにイベントを終了させようとしましたががうまくいきません。 よろしくお願いいたします。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/07 04:45
2023/09/07 04:47