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 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
Mar 14 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
Nov 25 Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
Bootstrap列表组学习使用
Feb 09 Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
Jun 12 Javascript
JS使用对象的defineProperty进行变量监控操作示例
Feb 02 Javascript
jquery中为什么能用$操作
Jun 18 jQuery
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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
个人站长制做网页常用的php代码
2007/03/03 PHP
php flv视频时间获取函数
2010/06/29 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
javascript window.opener的用法分析
2010/04/07 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
Python fileinput模块使用实例
2015/06/03 Python
Python获取当前路径实现代码
2017/05/08 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
Python更换pip源方法过程解析
2020/05/19 Python
全球工业:Global Industrial
2020/02/01 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
大学生四年生活自我鉴定
2013/11/21 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
服务口号大全
2014/06/11 职场文书
企业精神口号
2014/06/11 职场文书
父亲节活动策划方案
2014/08/24 职场文书
党员四风剖析材料
2014/08/27 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
Go语言读取txt文档的操作方法
2022/01/22 Golang