javascript DOM编程基础
<html > <head> <title name="s">js DOM编程基础</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <script type="text/javascript"> //js闭包 (function(){ //通过转义字符实现特殊字符的输出 var s = "fsdf'423\"fsd"; var d = 'fsd\'f"fds"sd'; alert(s+" , "+d); })(); //在dom文档加载完成后触发 //卸载上边的闭包中会顺序执行,结果为0 //由于使用FireFox测试,不用alert了,点来点去太麻烦了 function get(){ ///8 var ipt = document.getElementsByTagName("input"); console.info(ipt.length); //根据id获取文本框的值 var it = document.getElementById("fc"); console.info(it.value); //获取普通标签之间的值 var is = document.getElementById("msg"); console.info(is.innerHTML); //获取嵌套标签的值 var com = document.getElementById("it"); console.info(com.innerHTML);//<h1>javascript高级程序设计</h1> //如果只是取出其中的内容,jquery中的text可以搞定,但是js没找到很直接的解析方法 //可以通过getElementsByTagName('h1')[0].innerHTML获取 //也可以通过获取其子节点实现 /* js 还是相当强大的 */ var vl = com.childNodes; console.info(vl[0].innerHTML); //获取文本框的值,等同于vl[0].innerHTML /* nodeType: 元素类型 --> 节点类型 元素element --> 1 属性attr --> 2 文本text --> 3 注释comments --> 8 文档document --> 9 */ console.info(com.lastChild.nodeValue);//此处未获取到 console.info(com.lastChild.nodeName);//input console.info(com.lastChild.nodeType);//1 console.info(com.firstChild.innerHTML); //15 通配符* ,统计所有的标签总数 /* 通配符统计,html,head ,body等网页中所有的html标签 */ var all = document.getElementsByTagName("*"); //dom对象 console.info(typeof all[0]+","+all.length+","+all[0]);//object,15,[object HTMLHtmlElement] for (i=0;i<all.length;i++){ //获取name属性的值和下标值 console.info(all[i].getAttribute("name")+","+i); } //js创建标签元素并添加到DOM文档中 var p =document.createElement("p"); p.innerHTML="javascript创建标签元素"; //将元素追加到指定的标签中 com.appendChild(p); } </script> </head> <body onload="get();"> <input > <input > <input id="fc" > <span id="msg">javascript DOM编程</span> <div> <span id="it"><h1>javascript高级程序设计</h1><input type="text" name="wo ca" value="内嵌子节点值的获取"></span> </div> <input name="js"> <input > <input > <input > <input > </body> </html>
nodeName、nodeValue 以及 nodeType 包含有关于节点的信息。
nodeName 属性含有某个节点的名称。
元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节点的 nodeName 永远是 #document 注释:nodeName 所包含的 XML 元素的标签名称永远是大写的
nodeValue 对于文本节点,nodeValue 属性包含文本。
对于属性节点,nodeValue 属性包含属性值。
nodeValue 属性对于文档节点和元素节点是不可用的。
nodeType nodeType 属性可返回节点的类型。
最重要的节点类型是:
元素类型 --> 节点类型 元素element --> 1 属性attr --> 2 文本text --> 3 注释comments --> 8 文档document --> 9
nodeValue就是用来得到“文本元素的值”的,即只适用于“文本节点”;
例子:
<html>
<head>
<script type="text/javascript">
function getNodeValue() {
var nv=document.getElementById("td1").firstChild.nodeValue;
var nn=document.getElementById("tr1").firstChild.nodeName;
var nv1=document.getElementById("tr1").firstChild.nodeValue;
alert("nv="+nv);
alert("nn="+nn);
alert("nv1="+nv1);
}
</script>
</head>
<body>
<table>
<tr id="tr1">
<td id="td1" >John</td>
<td>Doe</td>
<td>Alaska</td>
</tr>
</table>
<input type="button" value="button1" onclick="getNodeValue()"/>
</body>
</html>
以上得到的结果:
nv=John;
nn=td;
nv1=null;
要分清元素的value属性和nodeValue 不一样,nodeValue适用于“文本节点”和“属性节点”;对应“文档节点”和“标签节点”不起作用
|
接口 |
nodeType常量 |
nodeType值 |
备注 |
|
Element |
Node.ELEMENT_NODE |
1 |
元素节点 |
|
Text |
Node.TEXT_NODE |
3 |
文本节点 |
|
Document |
Node.DOCUMENT_NODE |
9 |
document |
|
Comment |
Node.COMMENT_NODE |
8 |
注释的文本 |
|
DocumentFragment |
Node.DOCUMENT_FRAGMENT_NODE |
11 |
document片断 |
|
Attr |
Node.ATTRIBUTE_NODE |
2 |
节点属性 |
/* 定义和用法
childNodes 属性可返回指定节点的子节点的节点列表,也就是包含在容易内的所有控件与文本属性字段,如果希望得到这些中的某些,必须通过 类别属性进行筛选。 childNodes常用属性:
nodeValue:
nodeValue适用于“文本节点(<td>中的文本内容)”和“属性节点”;对应“文档节点”和“标签节点(li)”不起作用
nodeName:元素节点的 nodeName 是标签名称属性节点的 nodeName 是属性名称
文本节点的 nodeName 永远是 #text
文档节点的 nodeName 永远是 #document
nodeType:
返回的数值
1:元素节点、
2:属性节点、
3:文本节点
firstChild:返回容器内的第一个控件对象,可以利用这个返回对象去获取该控件的属性信息
parentNode:返回子节点对象外层的父对象,可以利用这个返回父对象去获取该控件的属性信息
previousSibling:获取同级节点上级节点对象,可以利用这个返回对象去获取该节点的属性信息
nextSibling:获取同级节点下级节点对象,可以利用这个返回对象去获取该节点的属性信息
语法:
nodeObject.childNodes
提示和注释
提示:请使用 length 属性来计算一个节点列表中节点的数目。当你已获悉节点列表的长度后,您就可以轻松地循环遍历此列表,并提取您所需要的值!
实例
在所有的例子中,我们将使用 XML 文件 books.xml,以及 JavaScript 函数 loadXMLDoc()。
下面的代码片段显示了此XML文档的子节点:
xmlDoc=loadXMLDoc("books.xml");
var x=xmlDoc.childNodes;
for (i=0;i<x.length;i++) {
document.write("Nodename: " + x[i].nodeName)
document.write(" (nodetype: " + x[i].nodeType + ")
<br />")
} */

浙公网安备 33010602011771号