HTML 节点:

HTML DOM定义了所有HTML元素的对象和属性 以及访问它们的方法。

HTML DOM是关于如何获取 修改 添加 或 删除HTML元素的标准。

在js中通过document这个对象提供的方法。

HTML DOM 节点信息

HTML DOM节点定义:是DOM结构中最基本的组成单元,每一个HTML标签都是结构的节点,节点也称之为元素。DOM节点也有明确的分类看看下图你就明了;

DOM节点信息包括 节点类型(nodeType),节点名称(nodeName) 和 节点值(nodeValue)

获取节点类型的语法:

nodeObject.nodeType

其中,nodeObject为DOM节点(节点对象).该属性返回以数字表示的节点类型,例如:元素节点 返回 1 ;属性节点返回 2;

例如:获取 id="demo"的<div>标签的节点类型

document.getElementById("demo").nodeType

该语句的返回值为1。

例子:获取元素节点和文本节点的类型值。

<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo1">点击这里显示节点类型</div> <script>
document.getElementById("demo1").addEventListener("click",function(){
//this 指当前发生事件的HTML元素 这里指<div>
var divType = this.nodeType;
var textType = this.firstChild.nodeType; alert("<div>标签的节点类型是:" + divType + "\n" +
"<div>标签内部文本的节点类型是:" + textType
);
});
</script> </body>
</html>

点击div提示的是 <div>标签的节点类型是:1  <div>标签内部文本的节点类型是:3;

 节点名称

节点名称就是DOM节点的名字 不同类型的节点对应不同的节点名称

获取节点名称的语法:

nodeObject.nodeName

其中,nodeObject 为DOM节点(节点对象)。

例如,获取id="demo"的<div>标签的节点名称:

document.getElementById("demo").nodeName;
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo1">点击这里显示节点名称</div> <script>
document.getElementById("demo1").onclick=function(){
var divName=this.nodeName;
var textName=this.firstChild.nodeName; // this 指当前发生事件的HTML元素,这里是<div>标签
var documentName=document.nodeName
alert(
"<div>标签的节点名称是:"+divName+"\n"+
"<div>标签内部文本的节点名称是:"+textName+"\n"+
"文档节点的节点名称是:"+documentName
);
} </script> </body>
</html>

提示的节点名称分别为:

<div>标签的节点名称是:DIV
<div>标签内部文本的节点名称是:#text
文档节点的节点名称是:#document

节点值

对于文本节点,节点值为文本内容 对于属性节点 节点值为属性的值

节点值对于文档节点和元素节点是不可用的。

获取节点值的语法:

nodeObject.nodeValue

其中,nodeObject 为DOM节点(节点对象)。

示例:获取文本节点的value

<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo1">点击这里显示节点值</div> <script>
document.getElementById("demo1").onclick=function(){ var textNodeValue=this.firstChild.nodeValue; // this 指当前发生事件的HTML元素,这里是<div>标签 alert(
"<div>标签内部文本的节点名称是:"+textNodeValue
);
}
</script>
</body>
</html>

JavaScript 节点的操作 创建 添加 移除 移动 复制

(1)创建新节点

createDocumentFragment()//创建一个DOM片段
createElement()//创建一个具体的元素
createTextNode()//创建一个文本节点

(2)添加 移除 替换 插入

appendChild()
removeChild()
replaceChild()
insertBefore()

(3)查找

getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性

下面的讲解要用到的HTML的例子

<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<ul id="myList">
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
</ul>
</body>
</html>

1.创建元素节点

document.createElement() 方法 用于创建元素,接受一个参数,即要创建元素的标签名,返回创建的元素节点
var div = document.createElement("div"); //创建一个div元素
div.id = "myDiv"; //设置div的id
div.className = "box"; //设置div的class

创建元素后还要把元素添加到文档树中

2.添加元素节点

appendChild() 方法 用于向childNodes列表的末尾添加一个节点,返回要添加的元素节点
var ul = document.getElementById("myList"); //获得ul
var li = document.createElement("li"); //创建li
li.innerHTML = "项目四"; //向li内添加文本
ul.appendChild(li); //把li 添加到ul子节点的末尾

添加后:

<ul id="myList">
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
<li>项目四</li>
</ul>

appendChild() 方法还可以添加已经存在的元素,会将元素从原来的位置移到新的位置

var ul = document.getElementById("myList"); //获得ul
ul.appendChild(ul.firstChild); //把ul的第一个元素节点移到ul子节点的末尾

运行后

<ul id="myList">
<li>项目二</li>
<li>项目三</li>
<li>项目一</li>
</ul>

insertBefore()方法 如果不是在末尾插入节点 而是想放在特定的位置上 可以使用这个方法 该方法接收两个参数 第一个为要加入的节点 第二个是参照节点 返回要添加的元素节点。

<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<ul id="myList">
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
</ul>
<script>
//创建元素后 还要把元素添加到文档树中
var ul = document.getElementById("myList");
var li = document.createElement("li");
li.innerHTML = "项目四";
var nodes = ul.childNodes;
ul.insertBefore(li,nodes[2]);
</script> </body>
</html>

运行结果

项目一
项目四
项目二
项目三

为什么会使用nodes[2]呢 因为用childNodes获取的节点包含空的文本节点。nodes的长度为7

3.移除元素节点

removeChild() 方法 ,用于移除节点,接受一个参数,即要移除的节点,返回被移除的节点,注意被移除的节点仍然在文档中,不过文档中已没有其位置了
var ul = document.getElementById("myList"); //获得ul
var fromFirstChild = ul.removeChild(ul.firstChild); //移除ul第一个子节点
var ul = document.getElementById("myList"); //获得ul
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合
ul.removeChild(lis[0]);       //移除第一个li,与上面不同,要考虑浏览器之间的差异 var ul = document.getElementById("myList");
var nodes = ul.childNodes;
ul.removeChild(nodes[1]);

4.替换节点元素

replaceChild() 方法 ,用于替换节点,接受两个参数,第一参数是要插入的节点,第二个是要替换的节点,返回被替换的节点
var ul = document.getElementById("myList"); //获得ul
var fromFirstChild = ul.replaceChild(ul.firstChild); //替换ul第一个子节点
var ul = document.getElementById("myList"); //获得ul;
var li = document.createElement("li"); //创建li
li.innerHTML= "项目四"; //向li内添加文本
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合
var returnNode = ul.replaceChild(li,lis[1]); //用创建的li替换原来的第二个li var ul = document.getElementById("myList");
var nodes = ul.childNodes;
var li = document.createElement("li");
li.innerHTML = "项目四";
//替换第一个元素
ul.replaceChild(li,nodes[1]);

5.复制节点

cloneNode() 方法,用于复制节点, 接受一个布尔值参数, true 表示深复制(复制节点及其所有子节点), false 表示浅复制(复制节点本身,不复制子节点)
var ul = document.getElementById("myList"); //获得ul
var deepList = ul.cloneNode(true); //深复制
var shallowList = ul.cloneNode(false); //浅复制

JavaScript 节点属性详解

根据DOM标准, HTML 文档中的每个成分都是一个节点 HTML为根节点

DOM (Document Object Model)是这样规定的:

整个文档是一个文档节点
每个 HTML 标签是一个元素节点
包含在 HTML 元素中的文本是文本节点
每一个 HTML 属性是一个属性节点
注释属于注释节点

一、如何获得节点引用

1.以前获取节点引用的方式:
      getElementById()
      getElementByTagName()
      getElementByName()

劣势:
      1.浪费内存
      2.逻辑性不强
 2.通过节点  关系属性 获得节点的引用:
      对象.parentNode  获得父节点的引用
      对象.childNodes  获得子节点的集合
      对象.firstChild  获得第一个子节点
      对象.lastChild   获得最后一个子节点
      对象.nextSibling 获得下一个兄弟节点的引用
      对象.previousSibling 获得上一个兄弟节点的引用

劣势:兼容性不好。

http://www.cnblogs.com/asqq/archive/2012/09/27/3194948.html

http://www.cnblogs.com/wangjie-01/p/4652549.html

http://www.itxueyuan.org/view/6346.html

http://www.codesec.net/view/219400.html

HTML 学习笔记 JavaScript (节点)的更多相关文章

  1. 学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

    学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcE ...

  2. [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡

    当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...

  3. HTML 学习笔记 JavaScript(面向对象)

    现在让我们继续跟着大神的脚步前进 学习一下JavaScript中的面向对象的思想,其实作为一个iOS开发者,对面向对象还是比较熟悉的,但是昨晚看了一下Js中的面向对象,妈蛋 一脸萌比啊.还好有大神.让 ...

  4. HTML 学习笔记 JavaScript (prototype)

    原博地址:http://www.cnblogs.com/dolphinX/p/3286177.html 原博客的作者是一个非常牛逼的前端大神,我作为一个初学者,在此借助大神的博客进行自己的学习.在这里 ...

  5. HTML 学习笔记 JavaScript (DOM)

    一 DOM 简介 通过HTML DOM 可以访问JavaScript 文档的所有元素 当网页被加载的时候,浏览器会创建页面的文档对象模型 HTML DOM 模型被构造成对象的树 HTML DOM 树 ...

  6. BOM、DOM学习笔记——JavaScript

    1.BOM的概述    browser object modal :浏览器对象模型.    浏览器对象:window对象.    Window 对象会在 <body> 或 <fram ...

  7. js学习笔记----JavaScript中DOM扩展的那些事

    什么都不说,先上总结的图~   Selectors API(选择符API) querySelector()方法 接收一个css选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null ...

  8. js学习笔记15----子节点和兄弟节点的操作

    1.元素.firstChild : 只读属性,第一个子节点 标准下:会包含文本类型的子节点. 非标准下:只包含元素类型子节点. 元素.firstElementChild : 只读属性,第一个元素子节点 ...

  9. HTML 学习笔记 JavaScript(数组)

    1.数组的创建 var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是 ...

随机推荐

  1. JQuery隐藏显示详情功能

    放置两个DIV:初始DIV :在Repetr绑定设置文字隐藏(三元运算符):'<%# Eval("字段2").ToString().Length>11?Eval(&qu ...

  2. Mac平台与Windows平台下AndroidStudio增量升级

    Android Studio增量升级什么情况下使用最合适呢? 比如现在的as版本是2.2版本,而你的as版本2.0版本,这个时候点Check For Updates就没有反应了,因为你已经2个有版本没 ...

  3. Xcode cannot launch because the device is locked.

    When you plug in your iPhone, it will ask you to trust the computer. If you already trust and unlock ...

  4. 【原】iOS设计模式之:建造者模式Builder Pattern,用于改进初始化参数

    本文主要讨论一下iOS中的Builder Pattern.与网上很多版本不同,本文不去长篇大论地解释建造者模式的概念,那些东西太虚了.设计模式这种东西是为了解决实际问题的,不能为了设计模式而设计模式, ...

  5. 初识JavaScript,Ajax,jQuery,并比较三者关系

    一.基本认识 1.JavaScript 定义: javaScript的简写形式就是JS,是由Netscape公司开发的一种脚本语言,一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态 ...

  6. linux下 yum 安装mysql和卸载

    1.查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 2.查看有没有安装包: yum list mysql* 3.安装mysql客户端 ...

  7. Java Gradle入门指南之gretty插件(安装、命令与核心特性)

        Java Web应用开发时常使用Gradle来进行项目管理,可以十分便利地解决包依赖等问题.war插件的出现,让项目部署成为一个复制粘贴的过程,那有没有办法让Java web应用的部署,就像w ...

  8. mysql online ddl

        大家知道,互联网业务是典型的OLTP(online transaction process)应用,这种应用访问数据库的特点是大量的短事务高并发运行.因此任何限制高并发的动作都是不可接受的,甚至 ...

  9. Access 2003 中自定义菜单栏

    在Access中如何用自定义的菜单代替Access自带的菜单,现在做一个简单的介绍: 1.打开您做的Access数据库: 2.单击工具栏,选择“自定义…”: 3.在“自定义”窗口,单击“工具栏”选项卡 ...

  10. memcache使用方法测试 # 转自 简单--生活 #

    <?php   //php操作memcache的使用测试总结--学习   //1 Memcache::connect;    //$memcache = new Memcache;    //$ ...