You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript拖拽功能报错:appendChild执行失败问题求助

拖拽功能报错:Failed to execute 'appendChild' on 'Node' 解决方法

错误原因

你在drop事件处理函数里的最后一行传错了参数:

seccion.appendChild(id_parrafo)

这里的id_parrafo是从dataTransfer里拿到的字符串ID,但appendChild()方法必须传入DOM节点对象,不是字符串。你已经通过document.getElementById(id_parrafo)获取到了正确的DOM节点(存在parrafo变量里),直接用这个变量就行。

修正后的完整代码

const p = document.querySelectorAll(".p")
const s = document.querySelectorAll(".s")

p.forEach(parrafo => {
    parrafo.addEventListener("dragstart", event => {
        parrafo.classList.add("dragging")
        event.dataTransfer.setData("id", parrafo.id)
    })

    parrafo.addEventListener("dragend", () => {
        parrafo.classList.remove("dragging")
    })
})

s.forEach(seccion => {
    seccion.addEventListener("dragover", event => {
        event.preventDefault()
    })

    seccion.addEventListener("drop", event => {
        const id_parrafo = event.dataTransfer.getData("id")
        const parrafo = document.getElementById(id_parrafo)
        // 这里改成传入parrafo节点,不是id字符串
        seccion.appendChild(parrafo)
    })
})

额外注意

确保所有带.p类的<p>元素都设置了唯一的id属性,否则document.getElementById()可能无法正确获取到目标节点,或者拿到错误的节点。

内容的提问来源于stack exchange,提问作者Maximo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:23:17