Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我有两个盒子和一张照片。用户可以在两个框之间拖动图片。我如何分辨图片是从哪个框中拖出的?_Javascript_Html_Css - Fatal编程技术网

Javascript 我有两个盒子和一张照片。用户可以在两个框之间拖动图片。我如何分辨图片是从哪个框中拖出的?

Javascript 我有两个盒子和一张照片。用户可以在两个框之间拖动图片。我如何分辨图片是从哪个框中拖出的?,javascript,html,css,Javascript,Html,Css,我有两个盒子和一张照片。用户可以在两个框之间拖动图片。我如何分辨图片是从哪个框中拖出的?我试着查看图片的父元素,但没有成功,因为HTML没有改变,我想 功能allowDrop(ev){ ev.preventDefault(); } 功能阻力(ev){ ev.dataTransfer.setData(“文本”,ev.target.id); } 功能降音器(ev){ ev.preventDefault(); var data=ev.dataTransfer.getData(“文本”); var

我有两个盒子和一张照片。用户可以在两个框之间拖动图片。我如何分辨图片是从哪个框中拖出的?我试着查看图片的父元素,但没有成功,因为HTML没有改变,我想


功能allowDrop(ev){
ev.preventDefault();
}
功能阻力(ev){
ev.dataTransfer.setData(“文本”,ev.target.id);
}
功能降音器(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
var nodeCopy=document.getElementById(数据).cloneNode(真);
nodeCopy.id=“newId”;
setAttribute(“样式”,“位置:绝对;左侧:“+ev.x+”px;顶部:“+ev.y+”px;变换:平移”(“+nodeCopy.width/2+”px,-“+nodeCopy.height/2+”px)”);
ev.target.appendChild(nodeCopy);
}
功能下降(ev){
if(document.getElementById('picture').parentElement.id=='bluebox'){
警报(“您从蓝色框中拖出!”);
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
var nodeCopy=document.getElementById(数据).cloneNode(真);
nodeCopy.id=“newId”;
setAttribute(“样式”,“位置:绝对;左侧:“+ev.x+”px;顶部:“+ev.y+”px;变换:平移”(“+nodeCopy.width/2+”px,-“+nodeCopy.height/2+”px)”);
ev.target.appendChild(nodeCopy);
}else if(document.getElementById('picture').parentElement.id=='redbox')){
警报(“您从红色框中拖出!”);
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
var nodeCopy=document.getElementById(数据).cloneNode(真);
nodeCopy.id=“newId”;
setAttribute(“样式”,“位置:绝对;左侧:“+ev.x+”px;顶部:“+ev.y+”px;变换:平移”(“+nodeCopy.width/2+”px,-“+nodeCopy.height/2+”px)”);
ev.target.appendChild(nodeCopy);
}
}
* {
保证金:0;
填充:0;
}
.盒子{
显示:块;
高度:300px;
宽度:300px;
背景色:红色;
}
B.第二箱{
显示:块;
高度:300px;
宽度:300px;
背景颜色:浅蓝色;
}


在您正在运行的代码中:

var nodeCopy = document.getElementById(data).cloneNode(true);
我认为这是复制根元素(原始元素的引用)并复制其原始细节,这意味着所有元素都源自蓝框-

请尝试使用克隆节点,而不是使用克隆节点

(一)

创建元素div并将其附加到用户通过拖放输入提供的位置

(二)

为元素编写strick html并使用incertAdjacenthtml

看一看这篇关于从源元素创建原始克隆元素的文章

我希望这有助于您调试


Wally

在您正在运行的代码中:

var nodeCopy = document.getElementById(data).cloneNode(true);
我认为这是复制根元素(原始元素的引用)并复制其原始细节,这意味着所有元素都源自蓝框-

请尝试使用克隆节点,而不是使用克隆节点

(一)

创建元素div并将其附加到用户通过拖放输入提供的位置

(二)

为元素编写strick html并使用incertAdjacenthtml

看一看这篇关于从源元素创建原始克隆元素的文章

我希望这有助于您调试

Wally

drop()
函数中,您可以获得a参数
ev
。使用
ev.toElement.id
,您可以从中获得目标的
id
。您只需检查
id
是否有目标:


功能allowDrop(ev){
ev.preventDefault();
}
功能阻力(ev){
ev.dataTransfer.setData(“文本”,ev.target.id);
}
功能降音器(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
var nodeCopy=document.getElementById(数据).cloneNode(真);
nodeCopy.id=“newId”;
setAttribute(“样式”,“位置:绝对;左侧:“+ev.x+”px;顶部:“+ev.y+”px;变换:平移”(“+nodeCopy.width/2+”px,-“+nodeCopy.height/2+”px)”);
ev.target.appendChild(nodeCopy);
}
功能下降(ev){
如果在
drop()
函数上(ev.toElement.id=='redbox'){/,您将获得一个参数
ev
。您可以使用
ev.toElement.id
从这个参数中获得目标的
id
。您只需检查
id
是否有目标:


功能allowDrop(ev){
ev.preventDefault();
}
功能阻力(ev){
ev.dataTransfer.setData(“文本”,ev.target.id);
}
功能降音器(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
var nodeCopy=document.getElementById(数据).cloneNode(真);
nodeCopy.id=“newId”;
setAttribute(“样式”,“位置:绝对;左侧:“+ev.x+”px;顶部:“+ev.y+”px;变换:平移”(“+nodeCopy.width/2+”px,-“+nodeCopy.height/2+”px)”);
ev.target.appendChild(nodeCopy);
}
功能下降(ev){

如果(ev.toElement.id='redbox'){/Helllo,堆栈溢出社区

见德国人对我提出的类似问题的回答:

他们的密码我放在TryIt上了:

为了更好地回答这个问题,他们的答案有所不同:

我删除了整个“蓝盒子”的东西,因为最终它是不必要的

我希望这能帮助那些遇到与我相同问题的人


--Matty,OP

你好,堆栈溢出社区

参见德语对我提出的类似问题的回答: