创建文本节点和使用innerHTML的却别

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

H0先生

2015-09-04 17:12

这里不使用创建文本节点而直接使用i.innerHTML="javascript";为什么不行?。。

写回答 关注

3回答

  • hooli
    2015-09-15 15:19:50

    可以用innerHTML 设置的啊,设置完了,再替换。代码:

    <!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");

           newnode.innerHTML=oldnode.innerHTML;
           oldnode.parentNode.replaceChild(newnode,oldnode);

       }
    </script>

    </body>
    </html>

  • Y_du
    2015-09-05 17:03:04
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    </head>
    <body>
        <div id="div">
            <b id="oldnode">JavaScript</b>是一个很常用的技术,为网页添加动态效果。
        </div>
        <a href="javascript:replaceMessage()"> 将加粗改为斜体</a>
        <script type="text/javascript">
          function replaceMessage(){
              var newnode = document.createElement("i");
              var div = document.getElementById('div');
              newnode.innerHTML = "javascript";
              div.appendChild(newnode);
           }    
        </script>
     </body>
    </html>


  • Y_du
    2015-09-05 08:47:15

    i.innerHTML="javascript"; 这样肯定不行了。这这是创建一个标签为i的元素,可是这个元素你都没有加到页面中。它怎么能渲染出来!

    hooli 回复H0先生

    可以用innerHTML 设置的啊,设置完了,再替换。代码: function replaceMessage(){ var newnode = document.createElement("i"); var oldnode = document.getElementById("oldnode"); newnode.innerHTML=oldnode.innerHTML; oldnode.parentNode.replaceChild(newnode,oldnode); }

    2015-09-15 15:19:09

    共 4 条回复 >

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题