【发布时间】:2021-08-20 20:10:08
【问题描述】:
我想将图像拖到另一个位置时出错。 TypeError:无法在“DataTransfer”上执行“setData”:需要 2 个参数,但只有 1 个存在。在 HTMLDivElement.dropLoc.ondrop 我不明白这个错误。我想将列表中的图像拖到另一个位置。 这是我的代码
<ul>
<li><img id="dragItem" src="http://res.cloudinary.com/demo/image/upload/w_300,h_200,c_crop/sample.jpg" /></li>
<li><img id="dragItem"
src="https://res.cloudinary.com/zestarla/image/upload/v1629324525/kajabi%20work/IMG_4954_wgmrmv.jpg" />
</li>
<li><img id="dragItem"
src="https://res.cloudinary.com/zestarla/image/upload/v1629324530/kajabi%20work/IMG_4952_auz4in.jpg" />
</li>
<li><img id="dragItem"
src="https://res.cloudinary.com/zestarla/image/upload/v1629324531/kajabi%20work/IMG_4962_hra9xx.jpg" />
</li>
<li><img id="dragItem"
src="https://res.cloudinary.com/zestarla/image/upload/v1629324533/kajabi%20work/IMG_4948_xoxjgd.jpg" />
</li>
<li><img id="dragItem"
src="https://res.cloudinary.com/zestarla/image/upload/v1629324536/kajabi%20work/IMG_4950_jktzgh.jpg" />
</li>
<li><img id="dragItem"
src="https://res.cloudinary.com/zestarla/image/upload/v1629324539/kajabi%20work/IMG_4949_wbxi0l.jpg" />
</li>
</ul>
<div id="dropLocation">Drop here</div>
<script>
var dragItem = document.getElementById("dragItem")
var dropLoc = document.getElementById("dropLocation")
dragItem.ondragstart = function (evt) {
evt.dataTransfer.setData('key', evt.target.id);
//console.log("it dragging...")
}
dropLoc.ondragover = function (evt) {
evt.preventDefault();
//console.log("it dragover")
}
dropLoc.ondrop = function (evt) {
var dropItem = evt.dataTransfer.setData('key');
evt.preventDefault();
var myElement = document.getElementById(dropItem);
var myNewElement = document.createElement('img');
myNewElement.src = myElement.src;
dropLoc.appendChild(myNewElement);
}
</script>
【问题讨论】:
-
错误不言自明:您使用一个参数而不是两个参数调用
DataTransfer.setData -
哦!谢谢。看看这一行
myNewElement.src = myElement.src给出错误:Cannot read property 'src' of null at HTMLDivElement.dropLoc.ondrop -
这意味着
myElement是null -
如何解决,我是 JS 新手
-
您是否将
setData替换为getData?请更简洁地揭露您的问题。
标签: javascript drag-and-drop draggable