document.all与getElementById、getElementsByName、getElementsByTagName用法区别-document.all

 Document.all:
 Document.all[]是文档中所有标签组成的一个数组变量,包括了文档对象中所有元素
理解这句话可看以下:
  1. 例1(这个可以让你理解文档中哪些是对象)
  2.   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.   <html xmlns="http://www.w3.org/1999/xhtml">
  5.   <head>
  6.   <title>Document.All Example</title>
  7.   <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  8.   </head>
  9.   <body>
  10.   <h1>Example Heading</h1>
  11.   <hr />
  12.   <p>This is a <em>paragraph</em>. It is only a <em>paragraph.</em></p>
  13.   <p>Yet another <em>paragraph.</em></p>
  14.   <p>This final <em>paragraph</em> has <em id="special">special emphasis.</em></p>
  15.   <hr />
  16.   <script type="text/javascript">
  17.   <!--
  18.   var i,origLength;
  19.   origLength = document.all.length;
  20.   document.write('document.all.length='+origLength+"<br />");
  21.   for (i = 0; i < origLength; i++)
  22.   {
  23.   document.write("document.all["+i+"]="+document.all[i].tagName+"<br />");
  24.   }
  25.   //-->
  26.   </script>
  27.   </body>
  28.   </html>
  29.   输出结果:
  30.   Example Heading
  31.   This is a paragraph. It is only a paragraph.
  32.   Yet another paragraph.
  33.   This final paragraph has special emphasis.
  34.   document.all.length=18
  35.   document.all[0]=!
  36.   document.all[1]=HTML
  37.   document.all[2]=HEAD
  38.   document.all[3]=TITLE
  39.   document.all[4]=META
  40.   document.all[5]=BODY
  41.   document.all[6]=H1
  42.   document.all[7]=HR
  43.   document.all[8]=P
  44.   document.all[9]=EM
  45.   document.all[10]=EM
  46.   document.all[11]=P
  47.   document.all[12]=EM
  48.   document.all[13]=P
  49.   document.all[14]=EM
  50.   document.all[15]=EM
  51.   document.all[16]=HR
  52.   document.all[17]=SCRIPT
可以通过ID,NAME或INDEX属性访问某个具体的元素
  1.  例2(访问一个特定元素)
  2.   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  3.   "http://www.w3.org/TR/html4/loose.dtd">
  4.   <html>
  5.   <head>
  6.   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  7.   <title>单击DIV变色</title>
  8.   <style type="text/css">
  9.   <!--
  10.   #docid{
  11.   height:400px;
  12.   width:400px;
  13.   background-color:#999;}
  14.   -->
  15.   </style>
  16.   </head>
  17.   <body><div id="docid" name="docname" onClick="bgcolor()"></div>
  18.   </body>
  19.   </html>
  20.   <script language="javascript" type="text/javascript">
  21.   <!--
  22.   function bgcolor(){
  23.   document.all[7].style.backgroundColor="#000"
  24.   }
  25.   -->
  26.   </script>
  27.   上面的这个例子让你了解怎么访问文档中的一个特定元素,比如文档中有一个DIV
  28.   <div id="docid" name="docname"></div>,你可以通过这个DIV的ID,NAME或INDEX属性访问这个DIV:
  29.   document.all["docid"]
  30.   document.all["docname"]
  31.   document.all.item("docid")
  32.   document.all.item("docname")
  33.   document.all[7]
  34.   document.all.tags("div")则返回文档中所有DIV数组,本例中只有一个DIV,所以用document.all.tags("div")[0]就可以访问了。
可以用document.all["元素名"].属性名="属性值"来动态改变元素的属性。用这条语句,可以做出许许多多动态网页效果,如:动态变换图片、动态改变文本的背景、动态改变网页的背景、动态改变图片的大小、动态改变文字的大小各颜色等等
  1. <script language="JavaScript">
  2. function cardClick(cardID){
  3. var obj;
  4. for (var i=1;i<7;i++){
  5. obj=document.all("card"+i);
  6. obj.style.backgroundColor="#3A6EA5";
  7. obj.style.color="#FFFFFF";
  8. }
  9. obj=document.all("card"+cardID);
  10. obj.style.backgroundColor="#FFFFFF";
  11. obj.style.color="#3A6EA5";
  12. for (var i=1;i<7;i++){
  13. obj=document.all("content"+i);
  14. obj.style.display="none";
  15. }
  16. obj=document.all("content"+cardID);
  17. obj.style.display="";
  18. }
  19. </script>
document.all可以判断浏览器是否是IE  
  if(document.all){  
    alert("is   IE!");  
  }

使用document.all注意的地方
  1. 代码1:  
  2.    
  3.   <input   name=aaa   value=aaa>  
  4.   <input   id=bbb   value=bbb>  
  5.    
  6.   <script   language=Jscript>  
  7.       alert(document.all.aaa.value)     //根据name取value  
  8.       alert(document.all.bbb.value)     //根据id取   value  
  9.   </script>  
  10.    
  11.   代码2:  
  12.       但是常常name可以相同(如:用checkbox取用户的多项爱好的情况)  
  13.    
  14.   <input   name=aaa   value=a1>  
  15.   <input   name=aaa   value=a2>  
  16.   <input   id=bbb   value=bbb>  
  17.    
  18.   <script   language=Jscript>  
  19.       alert(document.all.aaa(0).value)     //显示a1  
  20.       alert(document.all.aaa(1).value)     //显示a2  
  21.       alert(document.all.bbb(0).value)     //这行代码会失败  
  22.   </script>  
  23.    
  24.    
  25.   代码3:  
  26.       理论上一个页面中的id是互不相同的,如果出现不同tags有相同的id  
  27.   document.all.id   就会失败,就象这样:  
  28.   <input   id=aaa   value=a1>  
  29.   <input   id=aaa   value=a2>  
  30.   <script   language=Jscript>  
  31.       alert(document.all.aaa.value)     //显示   undefined   而不是   a1或者a2  
  32.   </script>  
  33.    
  34.   代码4:  
  35.       对于一个复杂的页面(代码很长,或者id是由程序自动产生),或着一个  
  36.   javascript初学者写的程序,很有可能出现两个tags有相同id的情况。  
  37.   为了编程的时候不出错,我推荐这样的写法:  
  38.    
  39.   <input   id=aaa   value=aaa1>  
  40.   <input   id=aaa   value=aaa2>  
  41.   <input   name=bbb   value=bbb>  
  42.   <input   name=bbb   value=bbb2>  
  43.   <input   id=ccc   value=ccc>  
  44.   <input   name=ddd   value=ddd>  
  45.    
  46.   <script   language=Jscript>  
  47.       alert(document.all("aaa",0).value)    
  48.       alert(document.all("aaa",1).value)    
  49.       alert(document.all("bbb",0).value)    
  50.       alert(document.all("bbb",1).value)    
  51.       alert(document.all("ccc",0).value)    
  52.       alert(document.all("ddd",0).value)    
  53.   </script>  
  54.    
  55.   这样最安全.
以下是我自己的测试:
  1. <html>
  2. <head>
  3. <title>
  4. document.all test
  5. </title>
  6. <script language="javascript">
  7. function view()
  8. {
  9. /*
  10.     //通过name两种访问格式
  11.     alert(document.all.aaa.value);
  12.     alert(document.all["aaa"].value);
  13.     //通过id的两种访问格式
  14.     alert(document.all.ccc.value);
  15.     alert(document.all["ccc"].value);
  16. */
  17.     //当一页中存在两个name相同的input时不能使用上面的访问方法,因为将返回undefine,请使用下面方式访问
  18.     alert(document.all.aaa(0).value);
  19.     alert(document.all.aaa(1).value);
  20.     //安全的写法
  21.     alert(document.all("aaa",0).value);
  22.     alert(document.all("aaa",1).value);
  23. }
  24. </script>
  25. </head>
  26. <body>
  27. <form name="form1" id="f1">
  28. <input type="text" name="aaa" >
  29. <input type="text" name="aaa" id="ccc">
  30. <input type="button" name="bbb" value="click" οnclick="view();">
  31. </form>
  32. </body>
  33. </html>
从上面可以看到我们在使用document.all的时候可能会返回一个值或多个值的情况,所以使用之前一定要判断长度,要不然会出现错误。
如下面的问题:两个函数对多个checkbox进行处理,分别执行全部选中和取消全选功能如果按下面使用会出现什么问题呢?
  1. <HTML>
  2. <SCRIPT LANGUAGE="JavaScript">
  3. <!--
  4. function checkall(){
  5.     var huang = document.all['huang'];
  6.     for(i = 0;i < huang.length;i++){
  7.         if(huang[i].type == "checkbox")
  8.         {
  9.             huang[i].checked = true;
  10.         }
  11.     }
  12. }
  13. function centerall(){
  14.     var huang = document.all['huang'];
  15.     for(i = 0;i < huang.length;i++){
  16.         huang[i].checked = false;
  17.     }
  18. }
  19. //-->
  20. </SCRIPT>
  21. <BODY>
  22. <input type="checkbox" name="huang" value="OFF">
  23. <input type="checkbox" name="huang" value="OFF">
  24. <input type="checkbox" name="huang" value="OFF">
  25. <br>
  26. <input type="button" value = "checkall" onclick = "checkall();">
  27. <input type="button" value = "centerall" onclick = "centerall();">
  28. </BODY>
  29. </HTML> 
看上面的代码,当表单中有多个checkbox的时候是没有问题的,但当其中只有一个checkbox的时候就会有问题,即点全选的时候不起作用,因为当其中只有一个checkbox的时候不再用document.all["huang"][0].checked来访问,而是直接用document.all["huang"].checked来访问了
看当只有一个checkbox的时候应改成下面代码
  1. <HTML>
  2. <SCRIPT LANGUAGE="JavaScript">
  3. <!--
  4. function checkall(){
  5.     var huang = document.all['huang'];
  6.     if(huang.length){
  7.         for(i = 0;i < huang.length;i++){
  8.             if(huang[i].type == "checkbox")
  9.             {
  10.                 huang[i].checked = true;
  11.             }
  12.         }
  13.     }else{
  14.         huang.checked = true;
  15.     }
  16. }
  17. function centerall(){
  18.     
  19.     if(huang.length){
  20.         for(i = 0;i < huang.length;i++){
  21.             if(huang[i].type == "checkbox")
  22.             {
  23.                 huang[i].checked = false;
  24.             }
  25.         }
  26.     }else{
  27.         huang.checked = false;
  28.     }
  29. }
  30. //-->
  31. </SCRIPT>
  32. <BODY>
  33. <input type="checkbox" name="huang" value="OFF">
  34. <br>
  35. <input type="button" value = "checkall" onclick = "checkall();">
  36. <input type="button" value = "centerall" onclick = "centerall();">
  37. </BODY>
  38. </HTML> 
或者使用另一种形式,使用getElementsByTagName,如下:
  1. <HTML>
  2. <SCRIPT LANGUAGE="JavaScript">
  3. <!--
  4. function checkall()
  5. {
  6.     var huang = document.getElementsByTagName("input");
  7.     for(i = 0;i < huang.length;i++){
  8.         if(huang[i].type == "checkbox")
  9.         {
  10.             huang[i].checked = true;
  11.         }
  12.     }
  13. }
  14. function centerall()
  15. {
  16.     var huang = document.getElementsByTagName("input");
  17.     for(i = 0;i < huang.length;i++){
  18.         if(huang[i].type == "checkbox")
  19.         {
  20.             huang[i].checked = false;
  21.         }
  22.     }
  23. }
  24. //-->
  25. </SCRIPT>
  26. <BODY>
  27. <input type="checkbox" name="huang" value="OFF">
  28. <br>
  29. <input type="button" value = "checkall" onclick = "checkall();">
  30. <input type="button" value = "centerall" onclick = "centerall();">
  31. </BODY>
  32. </HTML> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值