`

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

阅读更多

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

1.Document.all[] 是一个多功能的类似数组的对象,它提供了对文档中所有 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>
<title>Document.All Example</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<h1>Example Heading</h1>
<hr />
<p>This is a <em>paragraph</em>. It is only a <em>paragraph.</em></p>
<p>Yet another <em>paragraph.</em></p>
<p>This final <em>paragraph</em> has <em id="special">special emphasis.</em></p>
<hr />
<script type="text/javascript">
var i,origLength;
origLength = document.all.length;
document.write('document.all.length='+origLength+"<br/>");
for (i = 0; i < origLength; i++){
document.write("document.all["+i+"]="+document.all[i].tagName+"<br/>");
}
</script>
</body>
</html>

 输出结果:
代码如下:
Example Heading
This is a paragraph. It is only a paragraph.
Yet another paragraph.
This final paragraph has special emphasis.
document.all.length=18
document.all[0]=!
document.all[1]=HTML
document.all[2]=HEAD
document.all[3]=TITLE
document.all[4]=META
document.all[5]=BODY
document.all[6]=H1
document.all[7]=HR
document.all[8]=P
document.all[9]=EM
document.all[10]=EM
document.all[11]=P
document.all[12]=EM
document.all[13]=P
document.all[14]=EM
document.all[15]=EM
document.all[16]=HR
document.all[17]=SCRIPT

 

2.可以通过ID,NAME或INDEX属性访问某个具体的元素

  例2(访问一个特定元素)
  代码如下:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>单击DIV变色</title>
<style type="text/css">
<!--
#docid{
height:400px;
width:400px;
background-color:#999;}
-->
</style>
</head>
<body><div id="docid" name="docname" onClick="bgcolor()"></div>
</body>
</html>
<script language="javascript" type="text/javascript">
function bgcolor(){
document.all[7].style.backgroundColor="#000"
}
</script>

 

上面的这个例子让你了解怎么访问文档中的一个特定元素,比如文档中有一个DIV
<div id="docid" name="docname"></div>,你可以通过这个DIV的ID,NAME或INDEX属性访问这个DIV:
document.all["docid"]
document.all["docname"]
document.all.item("docid")
document.all.item("docname")
document.all[7]
document.all.tags("div")则返回文档中所有DIV数组,本例中只有一个DIV,所以用document.all.tags("div")[0]就可以访问了。

 

可以用document.all["元素名"].属性名="属性值"来动态改变元素的属性。用这条语句,可以做出许许多多动态网页效果,如:动态变换图片、动态改变文本的背景、动态改变网页的背景、动态改变图片的大小、动态改变文字的大小各颜色等等

 

[code]
<script language="JavaScript">
function cardClick(cardID){
var obj;
for (var i=1;i<7;i++){
obj=document.all("card"+i);
obj.style.backgroundColor="#3A6EA5";
obj.style.color="#FFFFFF";
}
obj=document.all("card"+cardID);
obj.style.backgroundColor="#FFFFFF";
obj.style.color="#3A6EA5";
for (var i=1;i<7;i++){
obj=document.all("content"+i);
obj.style.display="none";
}
obj=document.all("content"+cardID);
obj.style.display="";
}
</script>
Document.all[]是文档中所有标签组成的一个数组变量,包括了文档对象中所有元素

[/code]

 

 

document.all可以判断浏览器是否是IE
if(document.all){
alert("is IE!");
}

 

 

使用document.all注意的地方
代码1:
代码如下:
<input name=aaa value=aaa>
<input id=bbb value=bbb>
<script language=Jscript>
alert(document.all.aaa.value) //根据name取value
alert(document.all.bbb.value) //根据id取 value
</script>
代码2:
但是常常name可以相同(如:用checkbox取用户的多项爱好的情况)
代码如下:
<input name=aaa value=a1>
<input name=aaa value=a2>
<input id=bbb value=bbb>
<script language=Jscript>
alert(document.all.aaa(0).value) //显示a1
alert(document.all.aaa(1).value) //显示a2
alert(document.all.bbb(0).value) //这行代码会失败

</script>

代码3:
理论上一个页面中的id是互不相同的,如果出现不同tags有相同的id,document.all.id 就会失败,就象这样

代码如下:
<input id=aaa value=a1>
<input id=aaa value=a2>
<script language=Jscript>
   alert(document.all.aaa.value) //显示 undefined 而不是 a1或者a2
</script>

 

代码4:
对于一个复杂的页面(代码很长,或者id是由程序自动产生),或着一个
javascript初学者写的程序,很有可能出现两个tags有相同id的情况。
为了编程的时候不出错,我推荐这样的写法:

代码如下:

<input id=aaa value=aaa1>
<input id=aaa value=aaa2>
<input name=bbb value=bbb>
<input name=bbb value=bbb2>
<input id=ccc value=ccc>

<input name=ddd value=ddd>
<script language=Jscript>
alert(document.all("aaa",0).value)
alert(document.all("aaa",1).value)
alert(document.all("bbb",0).value)
alert(document.all("bbb",1).value)
alert(document.all("ccc",0).value)
alert(document.all("ddd",0).value)
</script>
这样最安全.
以下是我自己的测试:
<html>
<head>
<title>
document.all test
</title>
<script language="javascript">
function view()
{
//当一页中存在两个name相同的input时不能使用上面的访问方法,因为将返回undefine,请使用下面方式访问
alert(document.all.aaa(0).value);
alert(document.all.aaa(1).value);
//安全的写法
alert(document.all("aaa",0).value);
alert(document.all("aaa",1).value);
}
</script>
</head>

<body>
<form name="form1" id="f1">
<input type="text" name="aaa" >
<input type="text" name="aaa" id="ccc">
<input type="button" name="bbb" value="click" onclick="view();">
</form>
</body>
</html>

 

 

从上面可以看到我们在使用document.all的时候可能会返回一个值或多个值的情况,所以使用之前一定要判断长度,要不然会出现错误。
如下面的问题:两个函数对多个checkbox进行处理,分别执行全部选中和取消全选功能如果按下面使用会出现什么问题呢?
<HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--
function checkall(){
var huang = document.all['huang'];
for(i = 0;i < huang.length;i++){
if(huang[i].type == "checkbox")
{
huang[i].checked = true;
}
}
}
function centerall(){
var huang = document.all['huang'];
for(i = 0;i < huang.length;i++){
huang[i].checked = false;

}
}
//-->
</SCRIPT>
<BODY>
<input type="checkbox" name="huang" value="OFF">
<input type="checkbox" name="huang" value="OFF">
<input type="checkbox" name="huang" value="OFF">
<br>
<input type="button" value = "checkall" onclick = "checkall();">
<input type="button" value = "centerall" onclick = "centerall();">
</BODY>
</HTML>

 

看上面的代码,当表单中有多个checkbox的时候是没有问题的,但当其中只有一个checkbox的时候就会有问题,即点全选的时候不起作用,因为当 其中只有一个checkbox的时候不再用document.all["huang"][0].checked来访问,而是直接用 document.all["huang"].checked来访问了
看当只有一个checkbox的时候应改成下面代码
代码如下:

<HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--
function checkall(){
var huang = document.all['huang'];
if(huang.length){
for(i = 0;i < huang.length;i++){
if(huang[i].type == "checkbox")
{
huang[i].checked = true;
}
}
}else{
huang.checked = true;
}
}
function centerall(){
if(huang.length){
for(i = 0;i < huang.length;i++){
if(huang[i].type == "checkbox")
{
huang[i].checked = false;
}
}
}else{
huang.checked = false;
}
}
//-->
</SCRIPT>
<BODY>
<input type="checkbox" name="huang" value="OFF">
[br]
<input type="button" value = "checkall" onclick = "checkall();">
<input type="button" value = "centerall" onclick = "centerall();">
</BODY>
</HTML>

 

 

getElementsByTagName
或者使用另一种形式,使用getElementsByTagName,如下:

<HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--
function checkall()
{
var huang = document.getElementsByTagName("input");
for(i = 0;i < huang.length;i++){
if(huang[i].type == "checkbox")
{
huang[i].checked = true;
}
}
}
function centerall()
{
var huang = document.getElementsByTagName("input");
for(i = 0;i < huang.length;i++){
if(huang[i].type == "checkbox")
{
huang[i].checked = false;
}
}
}
//-->
</SCRIPT>
<BODY>
<input type="checkbox" name="huang" value="OFF">
[br]
<input type="button" value = "checkall" onclick = "checkall();">
<input type="button" value = "centerall" onclick = "centerall();">
</BODY>
</HTML>

 

document.all 返回可以是一个对象,也可以是一个对象集合

getElementById  返回是一个对象

getElementsByName 返回的是对象集合

getElementsByTagName 返回的是对象集合

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

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

    HTML DOM 定义了多种查找元素的方法,除了 getElementById() 之外,还有 getElementsByName() 和 getElementsByTagName()。

    document.all与getElementById、getElementsByName、getElementsByTagName用法区别-document.all第1/2页

    Document.all[]是文档中所有标签组成的一个数组变量,包括了文档对象中所有元素

    javaScript对象

    5. Document对象的getElementById()方法用于访问唯一的元素 6. Document对象的getElementsByName()方法用于访问相同name属性的一组元素 7. Document.对象的getElementsByTagName()方法用于访问相同标签的一组元素:: ...

    解决 firefox 不支持 document.all的方法

    document.all在firefox下不支持,上网搜索了一下, 用 document.getElementsByTagName(“*”) 替代就OK了。 getElementsByTagName(“*”) 可以得到得到所有元素的集合 getElemntById 可以按id得到某一元素 ...

    Javascript访问html页面的控件的方法详细分析第1/2页

     document.getElementsByName 3 document.getElementsByTagName 4 document.all 下面我主要谈谈以上几个方法的具体用法: 一.首先我来谈谈document.getElementById的用法。 Var obj=document.getElementById

    JavaScript权威指南

    Document Information Properties Section 14.5. Forms Section 14.6. Images Section 14.7. Links Section 14.8. Anchors Section 14.9. Applets Section 14.10. Embedded Data Chapter 15. Forms...

    JavaScript获取当前页面上的指定对象示例代码

    方法如下: 代码如下: document.getElementById(ID) //获得指定ID值的对象 document.getElementsByName(Name) //获得指定Name值的对象数组 document.all[] //很智能的东东 不过非WEB标准 document....

    js选择器全面解析

    原生JS选择器有getElementById、getElementsByName、getElementsByTagName和getElementsByClassName这四个,下面我就一个一个介绍这四个选择器的用法。 1.getElementById(通过ID获取元素) 用法:document....

    JavaScript面试题和答案

    var inputs = document.getElementsByTagName("input"); for( var i = 0 ; inputs.length ; inputs++ ) { if(inputs[i].type == "text" ) { inputs[i].value = ""; } } 28.JS中用什么方法去读取DIV标记的...

    JS简单实现获取元素的封装操作示例

    本文实例讲述了JS简单实现获取元素的封装操作。分享给大家供大家参考,具体如下: JS封装获取元素 js的获取元素: ID:document.getElementById();...使用方法: $(id) /$(tagname)[0] 2. 对象写法: var Base={ ge

    JS选取DOM元素常见操作方法实例分析

    document.getElementById('myid'); 2、通过CLASS选取元素 document.getElementsByClassName('myclass')[0]; 3、通过标签选取元素 document.getElementsByTagName('mydiv')[0]; 4、通过NAME属性选取元素(常用于...

    JavaScript中 DOM操作方法小结

    document.getElementById() 根据id选择器找,最多找一个; document.getElementsByName() 根据name找,找出的是数组;  document.getElementsByclassName() 根据类选择器找,找出的也是数组; document....

    js查找节点的方法小结

    3. 在表单中使用,根据表单name来查找 代码如下:document.getElementsByName(); 特别说明:目前,部分浏览器已经将getElementsByName扩展到其它元素节点,即div/p…等标签如果有name属性,同样也可以

    JavaScript中获取HTML元素值的三种方法

    如果要取得值可以使用value,如:var x=document.getElementById(“id”).value; 方法一:getElementById() 方法 可返回对拥有指定 ID 的第一个对象的引用。 语法:document.getElementById(id) 在 DOM 程序设

    dom对象文档

    dom对象文档,� 访问 DOM 对象 的方法: � ( 1 ) document. getElementById (); 通过 ID 属性访问, 返回值是 对象 � ( 2 ) document . getElementsByName (); // 注意 s 通过 Name 属性访问, 返回的是 数组...

    JavaScript操作表单实例讲解(上)

    document.getElementsByName(); document.getElementsByTagName(); 2&gt;通过集合的方式来获取引用 document.forms[下标] document.forms[name] document.forms.name 3&gt;通过name直接获取“(只适用于表单) document....

    web.zip

    var tableList = document.getElementsByTagName("TABLE"); for(var i = 0 ; i &lt; tableList.length ; i++) { if(tableList[i].name == "tableName") { table = tableList[i] break; } } var value = document...

    JS获取html对象的几种方式介绍

    document.getElementById(“zx”); 通过ID获取html元素对象,ID号在html文档当中应该是唯一的。返回的是唯一element对象。并且所有浏览器都兼容。 document.getElementsByTagName(“span”)[0]; 通过标签查找html...

Global site tag (gtag.js) - Google Analytics