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

请问为什么另一种写法不可以?

举例中,代码为:

  <script type="text/javascript">

    function replaceMessage(){

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

        var newnodeText=document.createTextNode("JavaScript");

        newnode.appendChild(newnodeText);

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

        oldNode.parentNode.replaceChild(newnode,oldNode);

    }

  </script>

  <h1 id="oldnode">Java</h1>

  <a href="javascript:replaceMessage()">"Java"替换"JavaScript"</a>

为什么不可以写成:

  <script type="text/javascript">

    function replaceMessage(){

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

        newnode.appendChild(newnodeText);

        newnodeText.innerHTML="JavaScript";

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

        oldNode.parentNode.replaceChild(newnode,oldNode);

    }

  </script>

  <h1 id="oldnode">Java</h1>

  <a href="javascript:replaceMessage()">"Java"替换"JavaScript"</a>




提问者:风早君418 2016-06-16 21:17

个回答

  • imjz
    2016-06-16 21:46:09
    已采纳

    第一种方法:你创建了一个P标签节点,一个文本节点,所以将文本节点插入到P节点后面是可以的。

    第二种方法:你只创建了一个P节点,想用innerHTML来显示内容,但innerHTML是直接显示指定标签的内容或者赋值给指定标签。你用newnodeText这个是没有意义的,这是个变量名,需要声明、赋值、调用,如你的第一种方法,不能直接拿来用,所以正确的写法是:

    <script type="text/javascript">

        function replaceMessage(){

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

            newnode.innerHTML="JavaScript";

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

            oldNode.parentNode.replaceChild(newnode,oldNode);

        }

      </script>