0

こちらのガイドに従って、サイトでドラッグ アンド ドロップを機能させようとしていますが、dropイベントをキャッチする際に問題が発生しています。

私がやりたいことのほとんどは、ユーザーが要素を下部の div にドラッグできるようにすることです。実際にドロップすると、その要素がその div に追加されます。

これが私のフィドルです。ご覧のとおり、handleDrop作成した関数は呼び出されません。

また、ドロップされる要素ではなく、個々の要素に eventListener の「ドロップ」を追加しようとしましたが、それもうまくいかないようです。これをフィドルでコメントアウトしました。何か助けはありますか?

4

1 に答える 1

1

ここにFiddleと別のアプローチがあります。

HTML

<img id="1" src="/" draggable="true" ondragstart="drag(event)" alt="Image 1"/>
<img id="2" src="/" draggable="true" ondragstart="drag(event)" alt="Image 2"/>
<img id="3" src="/" draggable="true" ondragstart="drag(event)" alt="Image 3"/>
<img id="4" src="/" draggable="true" ondragstart="drag(event)" alt="Image 4"/>
<img id="5" src="/" draggable="true" ondragstart="drag(event)" alt="Image 5"/>

<div id="playlist" ondrop="drop(event)" ondragover="allowDrop(event)">

</div>

CSS

#playlist {
  position: absolute;
  top: 150px;
  left: 0;
  width: 960px;
  min-height:160px;
  background-color:#e5e5e5;
}
#playlist img {
  margin: 5px;
}
img {
  width: 150px;
  height: 90px;
  margin: 5px;
}

JS

function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("Text",ev.target.id);
}

function drop(ev) {
  ev.preventDefault();
  var data=ev.dataTransfer.getData("Text");
  ev.target.appendChild(document.getElementById(data).cloneNode(true));
}
于 2013-09-15T00:04:46.063 に答える