你好,我想建立一个使用HTML的阻力和内置功能下降一个Web应用程序。我遇到的一个问题是,当我将一个项目拖放到另一个项目时,拖放功能被调用四次而不是一次。有人可以指出我做错了什么,或告诉我如何解决它只能被称为一次?谢谢!HTML为什么函数drop被调用四次而不是一次?
HTML,所有div正是这样的一个,但用不同的ID的
<div id="Main" draggable="true" ondragstart="drag(event)" ondrop="drop(event)" ondragover="allowDrop(event)" data-sqlId="0">
的Javascript
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
if(ev.target.getAttribute("data-sqlId")!=null){
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
moves.push({dropped:{id:data, sqlId:document.getElementById(data).getAttribute("data-sqlId")}, target:{id:ev.target.id, sqlId:ev.target.getAttribute("data-sqlId")}});
}
console.log(moves);
}
的解释了一下,其他的代码,不具有与阻力做,拖放功能。丢弃时,我首先检查div是否具有属性“data-sqlId”,以查看它是否是我希望其他人能够放入的div。一旦通过,我保存每个被放弃的div的两个属性和目标div。这些被保存到全局数组中。我知道drop是被调用四次而不是一次,因为这些值被添加到全局数组四次而不是一次。如果损坏程度更差,我可以只是有一个检查,当我通过全球阵列循环只执行每第四个项目,但编号真的喜欢只是为了弄清楚为什么它被称为四倍。谢谢!!
的jsfiddle与代码 https://jsfiddle.net/AwesomeTN/sk1d8jsm/
你能演示该问题[堆栈段(http://meta.stackoverflow.com/questions/270944/feedback-requested-stack-snippets-2-0)或的jsfiddle? – Barmar
即时通讯工具有拖动拖放甚至在JSFiddle工作 – AwesomeTN
我添加了一个JSFiddle与我的代码,但我无法得到它甚至拖放所有 – AwesomeTN