HTML文档中一切都是节点!

    整个文档是文档节点;

    注释是注释节点;

    每一个HTML元素都是一个元素节点;

    元素内的文本内容是文本节点;

    连元素的每一个属性都是一个属性节点。

    看到这些是不是感觉很熟悉,没错,就像JS中一切都是对象一样,HTML文档中一切都是节点。


    我们可以使用各种访问节点的方法,对任意一个节点进行增删改查等等操作。从而达到对整个页面的各种操作。

  增:

    如果要向HTML添加一个元素,需要先创建一个元素(元素节点),然后再将其追加到已有的元素上。

    创建元素节点newNode:

      var newNode = document.createElement(String tagName)

    创建元素内的文本节点:

      var textNode = document.createTextNode(String data)

    把文本节点textNode添加到新建的元素节点newNode上:

      newNode.appendChild(textNode)

    把新建的元素节点newNode添加到已存在的元素节oldNode点末尾:

      oldNode.appendChild(newNode)

    或者把新建的元素节点newNode添加到已存在的元素节点oldNode的某个子节点childNode前:

      oldNode.insertBefore(newNode,childNode)

    例子:

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="jquery.js"></script>
<script type="text/javascript">
window.onload = function(){
var pp = document.createElement("li");
var hh1 = document.createElement("h1");
var ttext = document.createTextNode("这是新添加的元素节点!");
pp.appendChild(hh1);
hh1.appendChild(ttext);
var ull = document.getElementById("ul");
ull.appendChild(pp);
}
</script>
<style type="text/css">
ul {
border: 1px solid ;
margin: 100px auto;
width: 400px;
list-style-type: none;
}
</style>
<title>JS</title>
</head>
<body>
<ul id="ul">
<li><h1>这是第一行!</h1></li>
<li><h1>这是第二行!</h1></li>
</ul>
</body>
</html>

  效果:

  

  

  删:

    查找到将要删除的节点removeNode和该节点的父节点parentNode后

      parentNode.removeChild(removeNode)

    例子:

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="jquery.js"></script>
<script type="text/javascript">
window.onload = function(){
var pp = document.createElement("li");
var hh1 = document.createElement("h1");
var ttext = document.createTextNode("这是新添加的元素节点!");
pp.appendChild(hh1);
hh1.appendChild(ttext);
var ull = document.getElementById("ul");
ull.appendChild(pp); var li1 = document.getElementById("li1");
ull.removeChild(li1);
}
</script>
<style type="text/css">
ul {
border: 1px solid ;
margin: 100px auto;
width: 400px;
list-style-type: none;
}
</style>
<title>JS</title>
</head>
<body>
<ul id="ul">
<li id="li1"><h1>这是第一行!</h1></li>
<li><h1>这是第二行!</h1></li>
</ul>
</body>
</html>  

  效果:

    

  改:
    查找到某个需要改动的元素节点node,然后对其文本、样式等进行改动

    改动其样式:

      node.style.color="red"

    改动其文本:

      node.innerHTML="string"

    实例:

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="jquery.js"></script>
<script type="text/javascript">
window.onload = function(){
var pp = document.createElement("li");
var hh1 = document.createElement("h1");
var ttext = document.createTextNode("这是新添加的元素节点!");
pp.appendChild(hh1);
hh1.appendChild(ttext);
var ull = document.getElementById("ul");
ull.appendChild(pp); var li1 = document.getElementById("li1");
ull.removeChild(li1); var li2 = document.getElementById("li2");
li2.style.color="red";
li2.innerHTML="改变了颜色和文本的第二行!"
}
</script>
<style type="text/css">
ul {
border: 1px solid ;
margin: 100px auto;
width: 400px;
list-style-type: none;
}
</style>
<title>JS</title>
</head>
<body>
<ul id="ul">
<li id="li1"><h1>这是第一行!</h1></li>
<li id="li2"><h1>这是第二行!</h1></li>
</ul>
</body>
</html>

  效果:

  

  查:

    我们除了应用getElementById()、getElementsByTagName()和getElementClassName()来获取特定的元素节点之余,我们还可以用getAttribute(String attribute) 来获取特定元素节点的某一个属性的值,并通过setAttribute(attrName,attrValue)来改变该属性的值。

    实例:

 <script type="text/javascript">
window.onload = function(){
var pp = document.createElement("li");
var hh1 = document.createElement("h1");
var ttext = document.createTextNode("这是新添加的元素节点!");
pp.appendChild(hh1);
hh1.appendChild(ttext);
var ull = document.getElementById("ul");
ull.appendChild(pp); var li1 = document.getElementById("li1");
ull.removeChild(li1); var li2 = document.getElementById("li2");
li2.style.color="red";
li2.innerHTML="改变了颜色和文本的第二行!" alert(li2.getAttribute("style"));19 }
</script>

  效果:

  

  除此之外,我们还可以通过某个节点的nodeName、nodeType和nodeValue获取节点的更多信息:

  nodeName属性规定节点的名称: 

    • nodeName 是只读的
    • 元素节点的 nodeName 与标签名相同
    • 属性节点的 nodeName 与属性名相同  
    • 文本节点的 nodeName 始终是 #text
    • 文档节点的 nodeName 始终是 #document

    注释:nodeName 始终包含 HTML 元素的大写字母标签名。

  nodeValue 属性规定节点的值:

    • 元素节点的 nodeValue 是 undefined 或 null
    • 文本节点的 nodeValue 是文本本身
    • 属性节点的 nodeValue 是属性值

  nodeValue 属性规定节点的值:

    • 元素节点的 nodeValue 是 undefined 或 null
    • 文本节点的 nodeValue 是文本本身
    • 属性节点的 nodeValue 是属性值

【Javascript】 DOM节点的更多相关文章

  1. javascript DOM 节点 第18节

    <html> <head> <title>DOM对象</title> </head><body><div >DOM对 ...

  2. JavaScript DOM–节点操作

    节点 节点至少拥有nodeType(节点类型).nodeName(节点名称)和nodeValue(节点值)这三个基本属性. 元素节点 nodeType  为1 属性节点 nodeType  为2 文本 ...

  3. JavaScript DOM节点和文档类型

    以下的例子以此HTML文档结构为例: <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  4. JavaScript DOM节点操作总结

    节点类型 节点类型主要有三种:元素节点,属性节点和文本节点. 而对DOM的主要也就是围绕元素节点和属性节点的增删改查.下面就分别从对元素节点的操作和对属性节点的操作来介绍. 元素节点 查 在对DOM进 ...

  5. javascript DOM节点

    获得子节点方式: 1.将文本内容也当成节点 childNodes firstChild lastChild 2.获得标签为内容的节点 children firstElementChild lastEl ...

  6. JavaScript获取HTML DOM节点元素详解(转)

    在Web运用程序特别是Web 2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要处理的疑问. 51CTO推荐阅读:JavaScript DOM文档 ...

  7. Javascript进阶篇——(DOM—节点---属性、访问节点)—笔记整理

    节点属性在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType : ...

  8. JavaScript学习笔记(三)——留言板知操纵DOM节点

    用JavaScript写了一个简易的留言板,暂不涉及数据库接入等. 1.功能以及流程 主要功能即为留言,用两个文本框接受用户输入的用户名以及留言内容,然后通过"提交留言"按钮将用户 ...

  9. JavaScript操作DOM节点

    DOM (文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网 ...

  10. JavaScript函数使用和DOM节点

    一.函数的声明与调用 1.函数声明的格式: function 函数名(参数1, 参数2,....){ 函数体代码 return 返回值:} 2.函数的调用:①直接调用:函数名(参数1的值,参数2的值, ...

随机推荐

  1. Linux删除(清空)正在运行的应用日志文件内容

    在测试环境定位问题时,如果发现日志文件内容太多或太大,有时需要删除该日志,如Tomcat,Nginx日志.以前每次都是先rm -rf ***.log,然后重启应用.直到后来发现了以下命令,原来可以不用 ...

  2. JVM 方法调用之静态分派

    分派(Dispatch)可能是静态也可能是动态的,根据分派依据的宗量数可分为单分派和多分派.这两种分派方式的两两组合就构成了静态单分派,静态多分派,动态单分派,动态多分派这4种组合.本章讲静态分派. ...

  3. linux bash命令行基本操作

      shell shell 我们叫做壳,我们知道操作系统底层是有一个内核kernel的,内核用来实现所有上层服务,所有上层命令,上层应用所需要的一些基本功能,比如说网络连接,网络通信,比如说键盘驱动, ...

  4. mybatis 单表的增删改查

    添加数据返回id mapper.xml mapper -> insert -> selectKey mybatis 内置别名

  5. mvc权限验证--AuthorizeAttribute

    在做后台管理时用户登录后就需要验证哪些权限了,没有登录的就直接退出到登录页面. 系统有自带的权限[Authorize],可用于几个地方: 1.将属性[Authorize]置于相关的action上方,验 ...

  6. webapi之权限验证

    webapi之权限验证 一.概念: 二.demo: 1.登录时生成token: FormsAuthenticationTicket token = , account, DateTime.Now, D ...

  7. 6.BOM

    BOM的介绍 浏览器对象模型. 操作浏览器部分功能的API.比如让浏览器自动滚动. BOM的结构图 window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子 ...

  8. StratifiedShuffleSplit()函数 实现对数据集的划分

    sklearn.model_selection.StratifiedShuffleSplit(n_splits=10, test_size=’default’, train_size=None, ra ...

  9. “全栈2019”Java第七十九章:类中可以嵌套接口吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  10. Swift和Objective C关于字符串的一个小特性

    一.Unicode的一个小特性 首先,Unicode规定了许多code point,每一个code point表示一个字符.如\u0033表示字符"3",\u864e表示字符&qu ...