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

为什么非要找到父母节点才能对元素进行替换/新增/在前面插入等操作?

既然已经用getElement(s)命令获取到元素了,那么直接在其上进行替换不就行了吗?为什么非得以父母节点为根然后调用replace??不多此一举吗?

正在回答

2 回答

replaceChild()方法将把一个给定父元素里面的一个子节点替换另一个子节点

你还记得parentNode的方法的示例吗↓

<div id="text">
  <p id="con"> parentNode 获取指点节点的父节点</p>
</div> 
<script type="text/javascript">
  var mynode= document.getElementById("con");
  document.write(mynode.parentNode.nodeName);
</script>

这里找到p元素的父节点mynode.parentNode→div

回到replaceChild方法把一个给定父元素里面的一个子节点替换为另一个子节点

 <div><b id="oldnode">JavaScript</b>是一个很常用的技术,为网页添加动态效果。</div>
  <a href="javascript:replaceMessage()"> 将加粗改为斜体</a>
  
    <script type="text/javascript">
      function replaceMessage(){
        var newnode=document.createElement("i");
        var newnodeText=document.createTextNode("javaScript");
        newnode.appendChild(newnodeText);
        var oldNode=document.getElementById("oldnode");
        oldNode.parentNode.replaceChild(newnode,oldNode);
 
       }    
  </script>

oldNode.parentNode.这里就是找到了id=‘oldnode’的给定父元素div然后用新建的 i 子节点替换原有的 b 子节点

----------不知道我有没有说明白,如果还有不清楚的可以再提出来~

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

DGua 提问者

非常感谢!!
2018-07-15 回复 有任何疑惑可以回复我~
#2

DGua 提问者

谢谢你的代码,我能看得懂。不过还是有一点直觉上的不理解,就是说,如果我都可以直接获取这一个元素,这个元素在文档流中的位置内容属性肯定都是获取了的,为啥不能直接对其进行替换而必须要先向上找到父母再向下进行替换。我也不知道我形容我的疑问有没有说清楚,总之我明白了运用的方法了。谢谢你呀
2018-07-15 回复 有任何疑惑可以回复我~
#3

慕设计6428170

我可以问一下 你代码的文本效果是怎么加上去的0.0
2018-07-21 回复 有任何疑惑可以回复我~

如果不能改变一套语言的规定,就尊重法则;

可能语言里的替换都是想通的。

比如PHP字符串里面的替换

str_replace(find,replace,string)
find必需。规定要查找的值。
replace必需。规定替换 find 中的值的值。
string必需。规定被搜索的字符串。


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

举报

0/150
提交
取消

为什么非要找到父母节点才能对元素进行替换/新增/在前面插入等操作?

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