Dom入门(二)--------关于理论知识
查找元素节点:
l getElementById()
寻找一个有着给定 id 属性值的元素,返回值是一个有着给定 id 属性值的元素节点。如果不存在这样的元素,它返回 null.
var oElement = document.getElementById ( sID )
该方法只能用于 document 对象
l getElementsByName()
• 寻找有着给定name属性的所有元素,这个方法将返回一个节点集合,这个集合可以当作一个数组来处理。这个集合的 length 属性等于当前文档里有着给定name属性的所有元素的总个数。
l getElementsByTagName()
• 寻找有着给定标签名的所有元素,这个方法将返回一个节点集合,这个集合可以当作一个数组来处理。这个集合的 length 属性等于当前文档里有着给定标签名的所有元素的总个数。
var elements = document.getElementsByTagName(tagName);
var elements = element.getElementsByTagName(tagName);
• 该方法不必非得用在整个文档上。它也可以用来在某个特定元素的子节点当中寻找有着给定标签名的元素。
var container = document.getElementById(“sid”);
var elements = container.getElementsByTagName(“p”);
alert(elements .length);
parentNode、firstChild以及lastChild
<table>
<tr>
<td>John</td>
<td>Doe</td>
<td>Alaska</td>
</tr>
</table>
l 在上面的HTML代码中,第一个 <td> 是 <tr> 元素的首个子元素(firstChild),而最后一个 <td> 是 <tr>元素的最后一个子元素(lastChild)。
l 此外,<tr> 是每个 <td>元 素的父节点(parentNode)。
查看子节点是否存在
l hasChildNodes()
• 该方法用来检查一个元素是否有子节点,返回值是 true 或 false.
var booleanValue = element.hasChildNodes();
• 文本节点和属性节点不可能再包含任何子节点,所以对这两类节点使用 hasChildNodes 方法的返回值永远是 false.
• 如果 hasChildNodes 方法的返回值是 false,则 childNodes,firstChild,lastChild 将是空数组和空字符串。
根节点
l 有两种特殊的文档属性可用来访问根节点:
• document.documentElement
• document.body
• 第一个属性可返回存在于 XML 以及 HTML 文档中的文档根节点。
第二个属性是对 HTML 页面的特殊扩展,提供了对 <body> 标签的直接访问
DOM节点的信息:
l 每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
nodeName(节点名称)
l nodeName 属性含有某个节点的名称。
l var name = node.nodeName;
l 元素节点的 nodeName 是标签名称
l 属性节点的 nodeName 是属性名称
l 文本节点的 nodeName 永远是 #text
l 文档节点的 nodeName 永远是 #document
l 注释:nodeName 所包含的 html 元素的标签名称永远是大写的
l 注:nodeName 是一个只读属性。
nodeValue(节点值)
l nodeValue:返回给定节点的当前值(字符串)
l 如果给定节点是一个属性节点,返回值是这个属性的值。
l 如果给定节点是一个文本节点,返回值是这个文本节点的内容。
l 如果给定节点是一个元素节点,返回值是 null
l nodeValue 是一个 读/写 属性,但不能对元素节点的 nodeValue 属性设置值,
但可以为文本节点的 nodeValue 属性设置一个值。
var li = document.getElementById(“li”);
if(li.firstChild.nodeType == 3)
li.firstChild.nodeValue = “国庆60年”;
nodeType(节点类型)
l nodeType:返回一个整数,这个数值代表着给定节点的类型。
l nodeType 属性返回的整数值对应着 12 种节点类型,常用的有三种:
l Node.ELEMENT_NODE ---1 -- 元素节点
l Node.ATTRIBUTE_NODE ---2 -- 属性节点
l Node.TEXT_NODE ---3 -- 文本节点
l nodeType 是个只读属性
替换节点:
l replaceChild()
• 把一个给定父元素里的一个子节点替换为另外一个子节点
var reference = element.replaceChild(newChild,oldChild);
• 返回值是一个指向已被替换的那个子节点的引用指针。
• 如果被插入的子节点还有子节点,则那些子节点也被插入到目标节点中
查找属性节点:
l getAttribute()
• 返回一个给定元素的一个给定属性节点的值
var attributeValue = element.getAttribute(attributeName);
• 给定属性的名字必须以字符串的形式传递给该方法。
• 给定属性的值将以字符串的形式返回,如果给定属性不存在,getAttribute() 将返回一个空字符串.
• 通过属性获取属性节点
getAttributeNode(属性的名称)--Node
设置属性节点:
l setAttribute()
• 将给定元素节点添加一个新的属性值或改变它的现有属性的值。
element.setAttribute(attributeName,attributeValue);
• 属性的名字和值必须以字符串的形式传递给此方法
• 如果这个属性已经存在,它的值将被刷新;
• 如果不存在,setAttribute()方法将先创建它再为其赋值。
Attribute属性:
Element类型是使用attributes属性的唯一一个DOM节点类型,attributes属性中包含一个NamedNodeMap,与NodeList类似,也是一个动态的集合,元素的每一个特性都有一个Attr节点表示,每个节点都保存在NamedNodeMap对象中,NamedNodeMap对象拥有下列方法.
l getNameItem(name):返回nodeName属性等于name的节点;
l removeNamedItem(name):从列表中移除nodeName属性等于name的节点
l setNamedItem(node):向列表中添加节点,以节点的nodeName属性为索引
l item(pos):返回位于数字pos位置处的节点。
创建新元素节点:
l createElement()
• 按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串.
var reference = document.createElement(element);
• 方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的 nodeType 属性值等于 1。
• 新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于 JavaScript 上下文的对象.
var pElement = document.createElement("p");
创建新文本节点:
l createTextNode()
• 创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节点引用指针。
var textNode = document.createTextNode(text);
• 方法只有一个参数:新建文本节点所包含的文本字符串
• 方法的返回值:是一个指向新建节点的引用指针。它是一个文本节点,所以它的 nodeType 属性等于 3.
• 新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性
var pElementText=document.createElement("li");
• var textElement=document.createTextNode("南京");
pElementText.appendChild(textElement);
插入节点:
l appendChild()
• 为给定元素增加一个子节点:
var newreference = element.appendChild(newChild).
给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点。
• 方法的返回值是一个指向新增子节点的引用指针。
• 该方法通常与 createElement() createTextNode() 配合使用
• 新节点可以被追加给文档中的任何一个元素
l insertBefore()
• 把一个给定节点插入到一个给定元素节点的给定子节点的前面
var reference = element.insertBefore(newNode,targetNode);
节点 newNode 将被插入到元素节点 element 中并出现在节点 targetNode 的前面.
• 节点 targetNode 必须是 element 元素的一个子节点。
• 该方法通常与 createElement() 和 createTextNode() 配合使用
删除节点:
l removeChild()
• 从一个给定元素里删除一个子节点
var reference = element.removeChild(node);
• 返回值是一个指向已被删除的子节点的引用指针。