前提・実現したいこと
ドラッグ&ドロップのシステムを下記のソースを元に作っています。
http://www.htmq.com/dnd/
javascriptの勉強を始め壁にぶつかりました。
一つ要素が入っていると、追加で他の要素がドラッグ&ドロップできないシステムを作成したいのですが、何分にも知識が乏しく方法論が浮かびません。解決の糸口をお教えください。
該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset=utf-8> <title>ドラッグ&ドロップ サンプル</title> <style> #fruits { /*単なるスタイリング*/ width:200px; height:100px; margin:20px; background-color:#FF9966; border:1px solid #cc3333; } .room { /*単なるスタイリング*/ width:200px; height:100px; margin:20px; background-color:#CCFF66; border:1px solid #00cc00; /*以下はwebkit系ブラウザでドラッグ&ドロップを動かすための指定(ブラウザのサポートが進めば、必要なくなると思われます)*/ -khtml-user-drag: element; } </style> <script> /***** ドラッグ開始時の処理 *****/ function f_dragstart(event){ //ドラッグするデータのid名をDataTransferオブジェクトにセット event.dataTransfer.setData("text", event.target.id); }/***** ドラッグ要素がドロップ要素に重なっている間の処理 *****/
function f_dragover(event){
//dragoverイベントをキャンセルして、ドロップ先の要素がドロップを受け付けるようにする
event.preventDefault();
}
/***** ドロップ時の処理 *****/
function f_drop(event){
//ドラッグされたデータのid名をDataTransferオブジェクトから取得
var id_name = event.dataTransfer.getData("text");
//id名からドラッグされた要素を取得
var drag_elm =document.getElementById(id_name);
//ドロップ先にドラッグされた要素を追加
event.currentTarget.appendChild(drag_elm);
//エラー回避のため、ドロップ処理の最後にdropイベントをキャンセルしておく
event.preventDefault();
}
試したこと
<div id="room" ondragover="f_dragover(event)" ondrop="f_drop(event)" ondragend="f_dragend(event)" > </div>内に子要素がなければ、ドロップ可能にとfunction f_drop(event){
var bo = document.querySelector('div');
if(bo.children===null){
//ドラッグされたデータのid名をDataTransferオブジェクトから取得
var id_name = event.dataTransfer.getData("text");
//id名からドラッグされた要素を取得
var drag_elm =document.getElementById(id_name);
//ドロップ先にドラッグされた要素を追加
event.currentTarget.appendChild(drag_elm);
//エラー回避のため、ドロップ処理の最後にdropイベントをキャンセルしておく
event.preventDefault();
}
}
に変更したのですが、全く動作しなくなりました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 14:29