为了账号安全,请及时绑定邮箱和手机立即绑定

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

举例中,代码为:

  <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>




正在回答

1 回答

第一种方法:你创建了一个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>


0 回复 有任何疑惑可以回复我~
#1

风早君418 提问者

appendChild不就是在新创建的P标签节点中添加子节点吗?不就意味着也创建了一个newnodeText节点了吗
2016-06-16 回复 有任何疑惑可以回复我~
#2

imjz 回复 风早君418 提问者

那你得创建一个文本节点才行啊,你即没声明这个变量,也没把创建的文本节点赋予给它,计算机哪知道你插入的是什么。
2016-06-16 回复 有任何疑惑可以回复我~
#3

风早君418 提问者 回复 imjz

我明白你的意思了,是要先创建、再添加,对吗?
2016-06-16 回复 有任何疑惑可以回复我~
#4

imjz 回复 风早君418 提问者

var newnodeText=document.createTextNode("JavaScript"); newnode.appendChild(newnodeText); 你也可以写 var x=document.createTextNode("JavaScript"); newnode.appendChild(x); 这里的newnodeText不是固有的节点,这只是一个变量名,随便换,他们这么写可能是为了好理解。
2016-06-16 回复 有任何疑惑可以回复我~
#5

imjz 回复 风早君418 提问者

对,还有这里的newnodeText只是一个变量名,不是固有的节点,你可以用a,b,c,d,x,y啊随便,他们这么写是为了好理解。
2016-06-16 回复 有任何疑惑可以回复我~
#6

风早君418 提问者 回复 imjz

好的好的,非常感谢!
2016-06-16 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468046    人
  • 解答问题       21891    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信