ok~_~ok 2018-12-30 11:23 采纳率: 80%
浏览 1360
已采纳

为什么使用Node.replaceChild报Uncaught TypeError: Cannot read property 'replaceChild' of null

图片说明

代码在下面:


<div class="parent">
    <div class="child">
        <p>学习Java</p>
    </div>
</div>


<script type="text/javascript">
    var newElement = document.createElement("h1");
    newElement.textContent = "学习JavaScript";

    var oldElement = document.querySelector("p");
    oldElement.parentNode.replaceChild(newElement,oldElement);

    console.log(newElement); //Chrome输出: <h1>学习JavaScript</h1>
    console.log(oldElement); //Chrome输出: <p>学习Java</p>
    console.log(oldElement.parentNode.replaceChild(newElement,oldElement)); //Uncaught TypeError: Cannot read property 'replaceChild' of null

</script>
  • 写回答

2条回答

  • 天际的海浪 2018-12-30 08:41
    关注

    Uncaught TypeError: Cannot read property 'replaceChild' of null 这个错误是说:无法对 null 调用replaceChild方法
    说明 oldElement.parentNode 的值是 null

    你之前已经用新创建的newElement 替换了页面中oldElement
    这样oldElement就脱离了页面,oldElement也就没有父节点parentNode了。
    再次访问oldElement.parentNode 就是 null 了。
    这时要访问父节点也应该是newElement的父节点: newElement.parentNode

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作