DOM
中的
节点
* 整个文档就是一个文档节点。
* 而每一个HMTL标签都是一个元素节点(divElement)。
* 标签中的文字则是文本节点(div)。
* 标签的属性是属性节点(divAttribute)。
* 一切都是节点
主要方法:
一、getElementById()
寻找一个有着给定 id 属性值的元素,返回值是一个有着给定 id 属性值的元素节点。如果不存在
这样的元素,它返回 null.
var oElement = document.getElementByIdx_x_x_x ( sID )
二、getElementsByName()
寻找有着给定name属性的所有元素,这个方法将返回一个节点集合,这个集合可以当作一个数组来处
理。这个集合的 length 属性等于当前文档里有着给定name属性的所有元素的总个数。
三、getElementsByTagName()
•寻找有着给定标签名的所有元素,这个方法将返回一个节点集合,这个集合可以当作一个数组来处理
这个集合的 length 属性等于当前文档里有着给定标签名的所有元素的总个数。
var elements = document.getElementsByTagName_r(tagName);
var elements = element.getElementsByTagName_r(tagName);
•该方法不必非得用在整个文档上。它也可以用来在某个特定元素的子节点当中寻找有着给定标签
的元素。
var container = document.getElementByIdx_x_x_x(“sid”);
var elements = container.getElementsByTagName_r(“p”);
alert(elements .length);
同时注意此方法与第二种方法的区别
四、hasChildNodes()
•该方法用来检查一个元素是否有子节点,返回值是 true 或 false
var booleanValue = element.hasChildNodes();
•文本节点和属性节点不可能再包含任何子节点,所以对这两类节点使用 hasChildNodes 方法的返回
永远是 false.
•如果 hasChildNodes 方法的返回值是 false,则 childNodes,firstChild,lastChild 将是空数组
和空字符串。
例:
var divElement=document.getElementByIdx_x_x_x("divs");
if(divElement.hasChildNodes()){
var nodes=divElement.childNodes;
for(var i=0;i<nodes.length;i++){
alert(nodes[i].getAttribute("id"));
}
}
五、nodeName和nodeType
文档里的每个节点都有以下属性。
lnodeName:返回一个字符串,其内容是给定节点的名字
var name = node.nodeName;
* 如果节点是元素节点,nodeName返回这个元素的名称
* 如果是属性节点,nodeName返回这个属性的名称
* 如果是文本节点,nodeName返回一个内容为#text 的字符串
注:nodeName 是一个只读属性。
lnodeType:返回一个整数,这个数值代表着给定节点的类型。
•nodeType 属性返回的整数值对应着 12 种节点类型,常用的有三种:
•Node.ELEMENT_NODE ---1 -- 元素节点
•Node.ATTRIBUTE_NODE ---2 -- 属性节点
•Node.TEXT_NODE ---3 -- 文本节点
•nodeType 是个只读属性
l
nodeValue
:返回给定节点的当前值(字符串)
•
如果给定节点是一个
属性节点
,返回值是这个
属性的值
。
•
如果给定节点是一个文本节点,返回值是这个文本节点的内容。
•
如果给定节点是一个
元素节点
,返回值是
null
•
nodeValue
是一个
读
/
写
属性,但不能对元素节点的
nodeValue
属性设置值,
但
可以为文本节点的
nodeValue
属性设置一个值
var
li
=
document.getElementByIdx_x_x_x
(“
li
”);
if(
li.firstChild.nodeType
== 3)
li.firstChild.nodeValue
= “
myLi”
;
六、replaceChild()
•
把一个给定
父元素
里的一个子节点替换为另外一个子节点
var
reference =
element.replaceChild
(
newChild,oldChild
);
•
返回值是一个指向已被替换的那个子节点的引用指针
。
•
如果被插入的子节点还有子节点,则那些子节点也被插入到目标节点中
七、查询属性节点和属性节点的值、删除和添加属性
l
getAttribute
()
•
返回一个给定元素的一个
给定属性节点的值
var
attributeValue
=
element.getAttribute
(
attributeName
);
•
给定属性的名字必须以字符串的形式传递给该方法。
•
给定属性的值将以字符串的形式返回,如果给定属性不存在,
getAttribute
()
将返回一个空字符串
.
l
getAttributeNode
()
通过属性获取属性节点
l
setAttribute
()
•
将给定元素节点
添加一个新的属性值或改变它的现有属性的值
element.setAttribute
(
attributeName,attributeValue
);
•
属性的名字和值必须以字符串的形式传递给此方法
•
如果这个属性已经存在,它的值将被刷新;
•
如果不存在,
setAttribute
()
方法将
先创建它
再为其赋值
。
l
removeAttribute
()
•
删除指定名字的属性
八、创建新元素节点,创建文本节点
lcreateElement_x_x()
•按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串.
var reference = document_createElement_x_x(element);
•方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的
nodeType 属性值等于 1。
•新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于JavaScript 上下文的对象.
var pElement = document_createElement_x_x("p");
l
createTextNode
()
•
创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节点引用指针。
var
textNode
=
document_createTextNode
(text);
•
方法只有一个参数:新建文本节点所包含的文本字符串
•
方法的返回值:是一个指向新建节点的引用指针。它是
一个文本节点
,所以它的
nodeType
属性
等于
3.
•
新元素节点不会自动添加到文档里,新节点没有
nodeParent
属性
九、innerHTML 属性
l浏览器几乎都支持该属性,但不是 DOM 标准的组成部分。
linnerHTML 属性可以用来读,写某给定元素里的 HTML 内容。
十、插入节点
la()
•
为给定元素增加一个子节点:
var
newreference
=
element.a
(
newChild
).
给定子节点
newChild
将成为给定元素节点
element
的
最后一个子节点
。
•
方法的返回值是一个指向新增子节点的引用指针。
•
该方法
通常与
createElement_x_x
()
createTextNode
()
配合使用
•
新节点可以被追加给文档中的任何一个元素
linsertBefore()
•
把一个给定节点插入到一个给定元素节点的给定子节点的
前面
var
reference =
element
.insertBefore
(
newNode,targetNode
);
节点
newNode
将被插入到元素节点
element
中并出现在节点
targetNode
的前面
.
•
节点
targetNode
必须是
element
元素的一个子节点
。
•
该方法通常与
createElement_x_x
()
和
createTextNode
()
配合使用
注意:
lDOM 没有提供 insertAfter() 方法但可以自己定义如下:
lselectElement.insertBefore(
•newOptionElement,
•optionElement.nextSibling);
l
childNodes
:返回一个数组,这个数组由给定元素节点的子节点构成:
var nodeList = node.childNodes;
•
文本节点和属性节点都不可能再包含任何子节点
,所以它们的
childNodes
属性永远会返回一个空数组。
•
如果想知道某个元素有没有子节点,可以用
hasChildNodes
方法。
•
如果想知道某个元素有多少个子节点,可以用
childNodes
数组的
length
属性。
•
childNodes
属性是一个只读属性
。
l
removeChild
()
•
从一个给定元素里删除一个子节点
var reference = element.removeChild(node);
•
返回值是一个指向已被删除的子节点的引用指针。
•
某个节点被
removeChild
()
方法删除时
,
这个节点所包含的所有子节点将同时被删除
。
•
如果想删除某个节点,但不知道它的父节点是哪一个,
parentNode
属性可以帮忙。
l
firstChild
:该属性返回一个给定元素节点的第一个子节点,返回这个节点对象
的指针。
var reference = node.firstChild;
•文本节点和属性节点都不可能包含任何子节点,所以它们的 firstChild 属性永远会返
回 null。
•某个元素的 firstChild 属性等价于这个元素的 childNodes 节点集合中的第一个节点,即:
var reference = node.ChildNodes[0];
•firstChild 属性是一个只读属性。
l
lastChild
:对应
firstChild
的一个属性。
l
nextSibling
:
返回一个给定节点的下一个兄弟节点。
l
parentNode
:返回一个给定节点的父节点。
•
parentNode
属性返回的节点永远是一个
元素
节点,因为只有元素节点才有可能包含子节点。
•
document
节点没有父节点
。
l
previousSibling
:返回一个给定节点的上一个兄弟节点
十一、显示弹出窗口
l
语法
:
vReturnValue = window . showModalDialog ( sURL,
vArguments , sFeatures )
参数说明:
lsURL--必选参数,用来指定对话框要显示的文档的URL。
lvArguments--可选参数,用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
lsFeatures--可选参数,用来描述对话框的外观等信息,可以使用一个或几个,用分号“;”隔开。
如:
<script type="text/javascript">
var buttonElement=document.getElementByIdx_x_x("btId");
buttonElement.οnclick=function(){
var dialogWidth=500;
//IE下,获取可见页面的宽度
var width=document.documentElement.clientWidth;
var dialogLeft=(width-dialogWidth)/2;
var sUrl="showModalDialog2.html";
var vArguments=window;
var sFeatures="dialogHeight:200px;dialogLeft:"+dialogLeft+"px";
//以模式方式显示窗体内容
window.showModalDialog(sUrl,vArguments,sFeatures);
}
</script>