Javascript 防止HTML5拖放功能多次拖放同一元素

Javascript 防止HTML5拖放功能多次拖放同一元素,javascript,html,Javascript,Html,我正在用HTML5制作一个拖放系统。将图像从屏幕左侧拖动到右侧这些图像标识为window1和window2。图像存储在一个数组中,并附加到一个隐藏的输入元素,这样我就可以通过提交将它们发送到下一页。问题是我只希望脚本检测window2中正在删除的内容,而不希望有多个条目 function drop(ev) { //append the hidden child number.toString(); var hidden = document.createElement("input"); hid

我正在用HTML5制作一个拖放系统。将图像从屏幕左侧拖动到右侧这些图像标识为window1和window2。图像存储在一个数组中,并附加到一个隐藏的输入元素,这样我就可以通过提交将它们发送到下一页。问题是我只希望脚本检测window2中正在删除的内容,而不希望有多个条目

function drop(ev)
{
//append the hidden child
number.toString();
var hidden = document.createElement("input");
hidden.type = "hidden";
hidden.name = "option"+number;
hidden.value = my_images;
var f = document.getElementById("select");
f.appendChild(hidden);
number++;

var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
ev.preventDefault();    
}
我在考虑一个简单的if语句,但是我应该寻找什么呢?如何检查图像当前放置的位置

编辑:使用onmouseover事件以某种方式检查我当前悬停在哪个元素上是一个好主意吗?如果是这样,我将如何实现这一点?目前,我已经编写了这段代码

var current = document.mouseover;
current = document.getElementById(this);

HTML5规范没有考虑拖动多个项目。因此,您似乎已经注意到了这一点,上面的各种HTML5事件并不表示已拖动多个项目

您在问题中没有明确地说这一点,但我猜您认为,这是一个较老的问题,由于浏览器自动生成的重影图像,多个项目正在被拖动。这些图像当然会给人一种多个元素被拖动的印象

这些重影图像以及浏览器生成它们的方式存在许多已知问题。具体地说,重影图像是在拖动开始时生成的,这意味着定义适当拖动的代码还没有运行。也就是说,浏览器不知道你是在拖动一个巨大的元素、一个小元素,还是在拖动之前意外地选择了很多文本。。。它生成它所看到的任何东西的图像,这就是你得到的


在某些浏览器(而不是IE)中,您可以用更合适的内容替换拖动图像。如果你不关心IE,这通常是可行的,但是如果你真的关心IE,那么你就已经发现了人们为什么对HTML5 API感到恼火。

你能调用if ev.target.children.length>0=>表示已经有孩子了吗?@TrinhHoangNhu我试着运行上面的程序,当我删除一个已经有孩子的图像时,它会立即触发,您可以返回false来禁用该进程?@TrinhHoangNhu这样做会禁用整个删除过程不知道为什么或如何修复,将0增加到1无助于您的意思是,当您删除多个条目时,只删除第一个条目?