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. git 恢复被修改的文件

    恢复到最后一次提交的改动:   git checkout filename 如果该文件已经 add 到暂存队列中,恢复文件:   git reset HEAD filename

  2. delphi实现窗体组建随窗体大小改变而改变

    在网上查了许多资料去论述如何在dephi中去实现组件随窗口大小的变化而变化,然都不尽如人意.有人说用组件的align + anchors 这两个属性去控制,但是我用了之后,让我大惊失色.把anchor ...

  3. Java50道经典习题-程序2 输出素数

    题目:判断101-200之间有多少个素数,并输出所有素数 分析:判断素数的方法:用一个数分别去除2到(这个数-1)的数,如果能被整除,则表明此数不是素数,反之是素数. public class Pro ...

  4. Nutch2.2.1 爬虫问题列表

    http://www.cnblogs.com/cy163/archive/2013/02/14/2912630.html http://blog.csdn.net/wangzhaodong001/ar ...

  5. MFC学习(二):消息映射

    1. 消息映射表的组成 宏DECLARE_MESSAGE_MAP,用在类的声明中,用来声明消息映射表. 宏BEGIN_MESSAGE_MAP,在使用类声明外,用来定义链接节点和填写链表节点中的数据,其 ...

  6. 一文解锁BILIBILI、ACFUN等弹幕网站是如何审核视频

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 人工审核对于A站和B站都是很重要的. AcFun稿件审核通行标准(V1.1) 表明,要审核的东西非常多,除了内容本身的合规性.调性,还有画质音质.撞 ...

  7. CYJian的水题大赛2 解题报告

    这场比赛是前几天洛谷上 暮雪﹃紛紛dalao的个人公开赛,当时基本上都在水暴力分......也没有好好写正解(可能除了T1) 过了几天颓废的日子之后,本蒟蒻觉得应该卓越一下了qwq,所以就打算写一个解 ...

  8. linux命令之系统管理命令(上)

    1.lsof:查看进程打开的文件 该命令可以列举系统中已经被打开的文件,可以根据文件找到对应的进程信息,同时也可以根据进程信息找到进程打开的文件. 参数 说明 -c 进程名 显示指定的进程名打开的文件 ...

  9. 在linux 创建网络会话和绑定两块网卡

    1. 如果我们在公司网络中要手动指定网络的IP地址,当我们回到家里则是使用DHCP(动态主机配置协议)自动分配IP地址.这就有点麻烦了,因为要频繁的修改IP地址,所以接下来我们来创建网络会话----- ...

  10. TCP协议中URG和PSH位

    URG(紧急位):设置为1时,首部中的紧急指针有效:为0时,紧急指针没有意义. PSH(推位):当设置为1时,要求把数据尽快的交给应用层,不做处理 通常的数据中都会带有PSH但URG只在紧急数据的时设 ...