gpt4 book ai didi

javascript - html5 拖放 - TypeError : Argument 1 of Node. appendChild 不是对象

转载 作者:行者123 更新时间:2023-11-30 12:00:50 24 4
gpt4 key购买 nike

我有这个简单的拖放脚本。它基本上可以让我将项目从 Pane 拖到另一个 Pane 。

错误是什么时候我完成删除我得到了这个错误

TypeError: Argument 1 of Node.appendChild is not an object.

这很奇怪,因为我很确定我的论点是一个对象。那么我在这里没有得到什么?

脚本是这样的

<!DOCTYPE html>
<html>

<head>

<style>
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
ul,
ol {
display: block;
width: 200px;
height: 300px;
float: left;
margin: 20px;
}
ul {
background: #927aff;
}
ol {
background: #dda3f2;
}
li {
list-style-type: none;
padding: 6px 10px;
color: #fff;
display: block;
border-bottom: 1px solid #fff;
cursor: pointer;
}
</style>

</head>

<body>
<ul id="music">
<li draggable="true">pop</li>
<li draggable="true">hiphop</li>
<li draggable="true">jazz</li>
<li draggable="true">country</li>
</ul>

<ol id="math">
<li draggable="true">number</li>
<li draggable="true">integeter</li>
<li draggable="true">floating point</li>
</ol>

<script>
var li = document.querySelectorAll('ul li');

Array.prototype.forEach.call(li, function(item) {
item.ondragstart = function(e) {
e.dataTransfer.setData("secret", this);
}
});
document.getElementById('math').ondrop = function(e) {
e.preventDefault();
console.log('this', this);
var dom = e.dataTransfer.getData("secret");
console.log(dom);
this.appendChild(dom);
};
document.getElementById('math').ondragover = function(e) {
e.preventDefault();
}
</script>
</body>

</html>

最佳答案

似乎数据作为 dataTransfer 的一部分被设置为字符串。

所以你的 dom 变量是一个字符串,所以它不是一个可以作为子节点附加的 HTML 节点

(如果在异常上加个断点都可以看到)


这是一个可以作为起点的工作示例(不使用数据传输):https://jsfiddle.net/maniator/aopmgvso/

var li = document.querySelectorAll('li');
var currentDragging;
Array.prototype.forEach.call(li, function(item) {
item.ondragstart = function(e) {
currentDragging = this;
}
});
document.getElementById('math').ondrop = function(e) {
e.preventDefault();
this.appendChild(currentDragging);
};
document.getElementById('music').ondrop = function(e) {
e.preventDefault();
e.currentTarget.appendChild(currentDragging);
};
document.getElementById('math').ondragover = function(e) {
e.preventDefault();
}
document.getElementById('music').ondragover = function(e) {
e.preventDefault();
}

关于javascript - html5 拖放 - TypeError : Argument 1 of Node. appendChild 不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36653742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com