当 oldnode 被替换时,所有与之相关的属性内容都将被移除!!!???

来源:9-15 替换元素节点replaceChild()

始终上路过

2016-12-22 17:04

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>

<body>



  <div><b id="oldnode">JavaScript</b>是一个很常用的技术,为网页添加动态效果。</div>

  <a href="javascript:replaceMessage()"> 将加粗改为斜体</a>

  

    <script type="text/javascript">

     function replaceMessage(){

          var newnode=document.createElement("i");  

          var oldnode=document.getElementById("oldnode");        

           oldnode.parentNode.replaceChild(newnode,oldnode);

           newnode.innerHTML=oldnode.innerHTML; 

           

}        

  </script>

  

 </body>

</html>


写回答 关注

3回答

  • 慕粉3909855
    2016-12-25 17:50:38
    已采纳

    var oldnode=document.getElementById("oldnode");这句话新建了一个存在于内存中的元素节点——oldnode,和id="oldnode"的元素节点b是不相干的,两者拥有独立的内存空间。

    oldnode.parentNode.replaceChild(newnode,oldnode);这句话删除的是元素节点b而非oldnode。

    始终上路过

    非常感谢!

    2016-12-25 23:29:37

    共 1 条回复 >

  • 始终上路过
    2016-12-23 15:32:36

    按说移除了 ,innerHTML 也没有了啊     事实有啊

  • 初级攻城狮
    2016-12-23 10:50:04

    是的,你可以不给他加innerHTML,你会发现他里面啥都没有

    初级攻城狮 回复始终上路过

    这么说,newnode.innerHTML=oldnode.innerHTML; 这个就相当于把之前节点的innerHTML重新给了现在节点的innerHTML,所以这时你看的是一样有innerHTML的,但其实在刚替换,没重新给之前,内容是没有的

    2016-12-23 15:43:45

    共 3 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468196 学习 · 21891 问题

查看课程

相似问题