Dom编程

来源:互联网 发布:10.11.4制作mac安装u盘 编辑:程序博客网 时间:2024/06/06 02:01

DOM简介:



DHTML :动态网页



示例:点按钮,变换文字颜色






猜大小游戏:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>时间</title><script type="text/javascript">var ran = parseInt(Math.random()*100+1);function method(){var element = document.getElementById("textid");var ele = document.getElementById("pid");var num = element.value;if(num>ran){ele.innerHTML = "    大了,继续猜!   ";}else if(num<ran){ele.innerHTML = "    小了,继续猜!   ";}elseele.innerHTML = "    恭喜你,猜中了!  ";}</script><style type="text/css">div, p{margin:0;padding:0;}#layout{width:350px;margin:150px auto;}p{width:330px;margin:20px auto;}</style></head><body><div id="layout"><p id="pid">   猜一个 1-100 之间的整数   </p><input type="text" id="textid" /><input type="button" value="我猜" onclick="method()"/></div></body></html>

老方法变颜色:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>时间</title><script type="text/javascript">var flag = true;function method(){var ele = document.getElementById("divid");if(flag){ele.className = "red";flag = false;}else{ele.className = "blue";flag = true;}}</script><style type="text/css">.red{background:#F00;}.blue{background:#09F;}</style></head><body><input type="button" value="演示" onclick="method()" /><div id="divid">我爱大中国!</div></body></html>

新方法变颜色:

使用 style 对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>时间</title><script type="text/javascript">var flag = true;function method(){var ele = document.getElementById("divid");if(flag){ele.style.backgroundColor = "red";flag = false;}else{ele.style.backgroundColor = "blue";flag = true;}}</script></head><body><input type="button" value="演示" onclick="method()" /><div id="divid">我爱大中国!</div></body></html>


节点的关系:

通过id可以获取一个节点的。

父节点只有一个,所以查询这个节点的属性,parentNode。

子节点有很多,所以查询集合,childNodes。

兄弟姊妹节点:上一个节点:previousSibling。

                         下一个节点:nextSibling。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>时间</title><script type="text/javascript">function method(){var div = document.getElementById("divid");var parent = div.parentNode;document.write("parentNode:<br/>");print(parent);var children = div.childNodes;document.write("<br/>childNodes:<br/>");document.write("children length:"+children.length+"<br/>");print(children[0]);var previous = div.previousSibling;document.write("<br/>previousSibling:<br/>");print(previous);var next = div.nextSibling;document.write("<br/>nextSibling:<br/>");print(next);var tableNode = div.previousSibling;document.write("<br/>td node:<br/>");//var tdText = tableNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0]; //实在太疯狂var tdNodes = tableNode.getElementsByTagName("td");print(tdNodes[0].childNodes[0]);}function print(node){document.write("nodeName="+node.nodeName+", nodeType="+node.nodeType+", nodeValue="+node.nodeValue+"<br/>");}</script></head><body><table border="1px" cellpadding="0"><tr><td>第一个单元格</td><td>第二个单元格</td><td>第三个单元格</td><td>第四个单元格</td></tr></table><div id="divid">我爱大中国!</div><input type="button" value="演示" onclick="method()" /></body></html>

结果:

parentNode:
nodeName=BODY, nodeType=1, nodeValue=null

childNodes:
children length:1
nodeName=#text, nodeType=3, nodeValue=我爱大中国!

previousSibling:
nodeName=TABLE, nodeType=1, nodeValue=null

nextSibling:
nodeName=INPUT, nodeType=1, nodeValue=null

td node:
nodeName=#text, nodeType=3, nodeValue=第一个单元格


获取节点对象的三种方法:

getElementById获取对 ID 标签属性为指定值的第一个对象的引用。getElementsByName根据 NAME 标签属性的值获取对象的集合。getElementsByTagName获取基于指定元素名称的对象集合


name 属性 只有 表单form 才有,单选框复选框的name值都一样,所以返回的是一个数组。

table对象 只有一种方法:getElementsByTagName。大多容器型标签都具备这个方法。


集合:all

 

用document 来演示all 集合:

这是老师的:


 

自己的:

只有 IE 浏览器能打出 注释 节点。 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>演示</title><script type="text/javascript">var info = "";function method(){var nodes = document.all;for(var x=0; x<nodes.length; x++){info += nodes[x].nodeName+"......."+nodes[x].nodeType+"<br/>";}document.write(nodes.length+"<br/>"+info);}</script></head><body><table>    <tr>        <td>第一个单元格</td>        <td>第二个单元格</td>        <td>第三个单元格</td>        <td>第四个单元格</td>    </tr></table><div id="divid">我爱大中国!</div><input type="button" value="演示" onclick="method()" /></body></html>

结果:

16
#comment.......8
HTML.......1
HEAD.......1
TITLE.......1
META.......1
SCRIPT.......1
BODY.......1
TABLE.......1
TBODY.......1
TR.......1
TD.......1
TD.......1
TD.......1
TD.......1
DIV.......1
INPUT.......1


 

集合:attributes

老师的能打出全部属性,我的只能打出自己写了的属性。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>演示</title><script type="text/javascript">var str = "";function method(){var inputNodes = document.getElementsByTagName("input");var attrs = inputNodes[0].attributes;for(var x=0; x<attrs.length; x++){str += attrs[x].nodeName+"..."+attrs[x].nodeType+"..."+attrs[x].nodeValue+"<br/>";}document.write(attrs.length+"<br/>"+str);}</script></head><body><table>    <tr>        <td>第一个单元格</td>        <td>第二个单元格</td>        <td>第三个单元格</td>        <td>第四个单元格</td>    </tr></table><div id="divid">我爱大中国!</div><input type="button" value="演示" onclick="method()" /></body></html>


 

 结果:

3
onclick...2...method()
type...2...button
value...2...演示

 

遍历document树:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>演示</title><script type="text/javascript">function method(){listNode(document,0);document.write(str);}function listNode(node,level){makeStr(node,level); level++;var child = node.childNodes;for(var x=0; x<child.length; x++){if(child[x].hasChildNodes()){listNode(child[x],level);}else{makeStr(child[x],level);}}}function makeLevel(level){var label = "";for(var x=0; x<level; x++){label += "|---";}return label;}var str = "";function makeStr(node,level){str += makeLevel(level)+node.nodeName+"..."+node.nodeType+"..."+node.nodeValue+"<br/>";}</script></head><body><table>    <tr>        <td>第一个单元格</td>        <td>第二个单元格</td>        <td>第三个单元格</td>        <td>第四个单元格</td>    </tr></table><div id="divid">我爱大中国!</div><input type="button" value="演示" onclick="method()" /></body></html>

Safari 显示的结果:

#document...9...null
|---html...10...null
|---HTML...1...null
|---|---HEAD...1...null
|---|---|---#text...3... 
|---|---|---META...1...null
|---|---|---#text...3... 
|---|---|---TITLE...1...null
|---|---|---|---#text...3...演示
|---|---|---#text...3... 
|---|---|---SCRIPT...1...null
|---|---|---|---#text...3... function method(){ listNode(document,0); document.write(str); } function listNode(node,level){ makeStr(node,level); level++; var child = node.childNodes; for(var x=0; x<child.length; x++){="" if(child[x].haschildnodes()){="" listnode(child[x],level);="" }else{="" makestr(child[x],level);="" }="" function="" makelevel(level){="" var="" label="" ;="" for(var="" x="0;" x"; } /*var str = ""; function method(){ var inputNodes = document.getElementsByTagName("input"); var attrs = inputNodes[0].attributes; for(var x=0; x"; } document.write(attrs.length+"
"+str); }*/ /*var info = ""; function method(){ var nodes = document.all; for(var x=0; x"; } document.write(nodes.length+"
"+info); }*/ 
|---|---|---#text...3... 
|---|---#text...3... 
|---|---BODY...1...null
|---|---|---#text...3... 
|---|---|---TABLE...1...null
|---|---|---|---#text...3... 
|---|---|---|---TBODY...1...null
|---|---|---|---|---TR...1...null
|---|---|---|---|---|---#text...3... 
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第一个单元格
|---|---|---|---|---|---#text...3... 
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第二个单元格
|---|---|---|---|---|---#text...3... 
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第三个单元格
|---|---|---|---|---|---#text...3... 
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第四个单元格
|---|---|---|---|---|---#text...3... 
|---|---|---|---|---#text...3... 
|---|---|---#text...3... 
|---|---|---DIV...1...null
|---|---|---|---#text...3...我爱大中国!
|---|---|---#text...3... 
|---|---|---INPUT...1...null
|---|---|---#text...3... 


IE 浏览器显示的结果:

#document...9...null
|---#comment...8...DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
|---HTML...1...null
|---|---HEAD...1...null
|---|---|---TITLE...1...null
|---|---|---META...1...null
|---|---|---SCRIPT...1...null
|---|---BODY...1...null
|---|---|---TABLE...1...null
|---|---|---|---TBODY...1...null
|---|---|---|---|---TR...1...null
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第一个单元格
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第二个单元格
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第三个单元格
|---|---|---|---|---|---TD...1...null
|---|---|---|---|---|---|---#text...3...第四个单元格
|---|---|---DIV...1...null
|---|---|---|---#text...3...我爱大中国!
|---|---|---INPUT...1...null
|---|---|---#text...3...

总结 节点node 类型:


0 0
原创粉丝点击