JavaScript HTML DOM元素 节点操作汇总


Posted in Javascript onJuly 29, 2019

前言

在文档对象模型 (DOM) 中,每个节点都是一个对象。DOM 节点有三个重要的属性 :

1. nodeName : 节点的名称

2. nodeValue :节点的值

3. nodeType :节点的类型

节点类型:元素 1 ,属性 2 ,文本 3 ,注释 8,文档 9。

一、添加和删除节点(HTML 元素)

1、创建节点

1)创建该元素(元素节点);

2)向一个已存在的元素追加该元素。

语法:appendChild(newnode)

eg:

<div id="div1">
  <p id="p1">这是一个段落</p>
  <p id="p2">这是另一个段落</p>
</div>

<script>
  var para=document.createElement("p");
  var node=document.createTextNode("这是新段落。");
  para.appendChild(node);

  var element=document.getElementById("div1");
  element.appendChild(para);
</script>

document.createElement("标签名"); // 创建元素节点

document.createTextNode("文本"); //创建文本节点

appendChild(); //方法向节点添加最后一个子节点。也可以使用 appendChild() 方法从一个元素向另一个元素中移动元素。 用法:a.appendChild(b),把b添加到a内。

2.添加节点

appendChild(); //在指定节点的最后一个子节点列表之后添加一个新的子节点。

语法,eg:同上。

insertBefore(); //insertBefore() 方法可在已有的子节点前插入一个新的子节点。

语法:insertBefore(newnode,node);

eg:

<ul id="test">
  <li>JavaScript</li>
  <li>HTML</li>
</ul> 
 
<script type="text/javascript">
   var otest = document.getElementById("test"); 
   var newli = document.createElement("li");
   newli.innerHTML="php";
   //otest.insertBefore(newli,otest.lastChild);
   otest.insertBefore(newli,otest.childNodes[1]);
</script>

3.删除节点

removeChild() //removeChild() 方法从子节点列表中删除某个节点。如删除成功,此方法可返回被删除的节点,如失败,则返回 NULL。

语法:nodeObject.removeChild(node)

eg:

<div id="div1">
  <p id="p1">这是一个段落。</p>
  <p id="p2">这是另一个段落。</p>
</div>

<script>
  var parent=document.getElementById("div1");
  var child=document.getElementById("p1");
  parent.removeChild(child);
</script>

DOM 需要清楚需要删除的元素,以及它的父元素。先找到希望删除的子元素,然后使用其 parentNode 属性来找到父元素。

4.替换节点

replaceChild //把一个给定父元素里面的一个子节点替换为另一个子节点。

语法:referencre = element.replaceChild(newChild,oldChild); //newChild: 必需,用于替换 oldChild的对象。 oldChild: 必需,被 newChild替换的对象。

eg:

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

注意:当 oldnew 被替换时,所有与之相关的属性内容都将被移除。 newChild必须先被建立。

5.访问子节点

childNodes //访问选定元素节点下的所有子节点的列表,返回的值可以看作是一个数组,他具有length属性。

语法:elementNode.childNodes //可用childNodes[i]数组的形式表示第几个子元素

eg:

<div>
  javascript 
  <p>javascript</p>
  <div>jQuery</div>
  <h5>PHP</h5>
</div>
<script type="text/javascript">
   var int=document.getElementsByTagName("div")[0].childNodes;
   for (var i=0;i<int.length;i++)
   {
     document.write("名字:"+int[i].nodeName+"<br>");
   }
   document.write("子节点个数:"+int.length+"<br>");
</script>

6.访问子节点的第一和最后项

firstChild //返回‘childNodes'数组的第一个子节点。如果选定的节点没有子节点,则该属性返回 NULL。

语法:node.firstChild //与elementNode.childNodes[0]是同样的效果。

lastChild //返回‘childNodes'数组的第一个子节点。如果选定的节点没有子节点,则该属性返回 NULL。

语法:node.lastChild //与elementNode.childNodes[elementNode.childNodes.length-1]是同样的效果。

eg:

<div id="con">
  <p>javascript</p>
  <div>jQuery</div>
  <h5>PHP</h5>
</div>
<script type="text/javascript">
  var x=document.getElementById("con");
  document.write("第一个子节点:"+x.firstChild.nodeName+"<br>");
  document.write("最后一个子节点:"+x.lastChild.nodeName);
</script>

7.访问父节点

parentNode //获取指定节点的父节点

语法:elementNode.parentNode

eg:

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

注意: 父节点只有一个,浏览器兼容问题,chrome、firefox等浏览器标签之间的空白也算是一个文本节点。

8.访问兄弟节点

nextSibling //可返回某个节点之后紧跟的节点(处于同一树层级中)。

语法:nodeObject.nextSibling

previousSibling //可返回某个节点之前紧跟的节点(处于同一树层级中)。

语法:nodeObject.previousSibling

eg:

<ul id="myList">
  <li id="item1">Coffee</li>
  <li id="item2">Tea</li>
</ul>
<p id="demo">点击按钮来获得首个项目的下一个同胞。</p>
<button onclick="myFunction()">试一下</button>
<script>
  function myFunction()
  {
    var x=document.getElementById("demo"); 
    x.innerHTML=document.getElementById("item1").nextSibling.innerHTML;
  }
</script>

注意: 如果无此节点,则该属性返回 null。两个属性获取的是节点。Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而其它浏览器不会忽略。

解决问题方法:判断节点nodeType是否为1, 如是为元素节点,跳过。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
Jan 15 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
深入浅析JavaScript中的constructor
Apr 19 Javascript
JavaScript动态生成二维码图片
Apr 20 Javascript
JS批量替换内容中关键词为超链接
Feb 20 Javascript
vue实现全选和反选功能
Aug 31 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
js遍历添加栏目类添加css 再点击其它删除css【推荐】
Jun 12 Javascript
微信小程序实现限制用户转发功能的实例代码
Feb 22 Javascript
JS控制下拉列表左右选择实例代码
May 08 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 Javascript
vue.js 2.0实现简单分页效果
Jul 29 #Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 #Javascript
教你搭建按需加载的Vue组件库(小结)
Jul 29 #Javascript
JavaScript 继承 封装 多态实现及原理详解
Jul 29 #Javascript
Vue2.0实现简单分页及跳转效果
Jul 29 #Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
Jul 29 #Javascript
js实现多张图片每隔一秒切换一张图片
Jul 29 #Javascript
You might like
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
永不消失的title提示代码
2007/02/15 Javascript
JavaScript库 开发规则
2009/01/31 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
python append、extend与insert的区别
2016/10/13 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
技术经济专业求职信
2014/09/03 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers