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

appendChild无法向body插入元素,报TypeError错误求原因

问题原因分析

你代码里的核心问题出在这一行:

let elm = document.createElement("p").innerHTML = txt;

这是连续赋值操作,JavaScript会从右往左执行:

  1. 先执行document.createElement("p").innerHTML = txt,这个操作的返回值是被赋值的txt(也就是字符串Hello Stack Overflow!)
  2. 接着把这个字符串赋值给elm,所以elm本质是个字符串,并非你创建的<p>DOM元素对象。

而appendChild()方法要求传入的必须是DOM节点对象,你传入字符串自然会抛出TypeError。

至于append()方法能正常运行,是因为它的参数支持DOM节点、字符串等多种类型,传字符串也能直接插入页面。

修正后的代码

如果要保留appendChild(),需要先创建元素并保存引用,再设置innerHTML:

(async () => {
    let resp = await fetch("/shaders", {
        method: "GET"
    });
    let txt = await resp.text();
    // 先创建元素并保存引用
    let elm = document.createElement("p");
    // 再设置innerHTML
    elm.innerHTML = txt;

    console.log(txt) // Hello Stack Overflow!
    document.body.appendChild(elm)
})()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:06:14