问答详情
源自:9-15 替换元素节点replaceChild()

哪里出问题了

<script type="text/javascript">

      function replaceMessage(){

         var oldnode=document.getElementsTagName("b");

         var oldHTML= oldnode.innerHTML;

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

         oldnode.parentNode.replaceChild(newnode,oldnode);

         newnode.innerHTML=oldHTML;

       }    

  </script>


提问者:百兽凯多00 2017-02-18 11:37

个回答

  • 静候飞鸟
    2017-02-23 11:02:41
    已采纳

    <script type="text/javascript">
          function replaceMessage(){
             var oldnode=document.getElementsTagName("b");
             // 注1
             var oldHTML= oldnode.innerHTML;
             var newnode=document.createElement("i");
             oldnode.parentNode.replaceChild(newnode,oldnode);
             newnode.innerHTML=oldHTML;
           }    
      </script>

    注1 :getElementsTagName 写错了    正确写法 getElementsByTagName  意思是:返回带有制定标签名的节点的对象的集合。返回元素的顺序是他们在文档的顺序。getElementsByTagName 在这里返回的是一个数组而我们需要用到的是getElementById, 通过ID获取指定的元素。

    正确的写法是  

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



  • ____燕
    2017-02-18 15:55:56

    <script type="text/javascript">

          function replaceMessage(){

             var oldnode=document.getElementsByTagName("b");

             var oldHTML= oldnode[0].innerHTML;

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

             oldnode[0].parentNode.replaceChild(newnode,oldnode[0]);

             newnode.innerHTML=oldHTML;

           }    

      </script>

    getElementsTagName不对,是getElementsByTagName

    还有getElementsByTagName得到的是一个数组