`
daidalei321
  • 浏览: 110761 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js--document.all与getElementById、getElementsByName

    博客分类:
  • js
阅读更多

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两种访问格式
alert(document.all.aaa.value);
alert(document.all["aaa"].value);
//通过id的两种访问格式
alert(document.all.ccc.value);
alert(document.all["ccc"].value);
*/
//当一页中存在两个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,如下:
复制代码 代码如下:
<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第1/2页

    本文将深入探讨`document.all`与`getElementById`、`getElementsByName`、`getElementsByTagName`这四个方法的区别和用法。 1. `document.all` `document.all` 是一个数组集合,它包含了HTML文档中所有的元素,...

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

    在HTML文档对象模型(DOM)中,有三种主要方法用于查找HTML元素:`document.all`,`getElementById()`,`getElementsByName()` 和 `getElementsByTagName()`。这些方法各有其特性和适用场景,理解它们的区别对于编写...

    JS:document.all的用法

    然而,需要注意的是,`document.all`在标准浏览器中可能不受支持,因此在实际项目中,更推荐使用`document.getElementById`、`document.getElementsByName`等标准方法来访问DOM元素,以确保代码的兼容性和可维护性。

    document.all与WEB标准

    【文档.all与Web标准】 在Web开发领域,Web标准是一个重要的概念,旨在确保网页在不同浏览器间的一致性和兼容性。然而,`document.all`是一个不符合这些标准的特性,它是微软在Internet Explorer(IE)中引入的一个...

    Javascript小技巧一箩筐

    - `document.getElementsByName("r1")`:通过name属性获取一组元素。 - `document.getElementById(id)`:通过id获取特定元素。 - `document.createElement("SPAN")`:创建新的元素节点。 - `obj.scrollIntoView...

    Document和Document.all区别分析

    总结来说,`Document` 和 `Document.all` 在JavaScript中处理DOM元素的方式有所不同。`Document` 是W3C标准的一部分,提供了更为灵活和强大的功能,而`Document.all` 是IE浏览器的一个非标准特性,现在已经被废弃。...

    JS的document.all函数使用示例

    例如,使用`document.getElementById`替代`document.all`,`document.getElementsByName`替代`document.all`对name属性的访问。 五、更安全的`document.all`使用示例 在复杂或可能有重复ID的情况下,可以采用以下...

    JS 大全 JS JS

    - `document.getElementsByName("r1")` 和 `document.getElementById(id)`:通过名称或ID查找元素。 - `timer=setInterval('scrollwindow()',delay)` 和 `clearInterval(timer)`:设置和清除定时器。 - `escape()...

    javascript小技巧&nbsp;&nbsp;超强推荐第1 5页.docx

    根据提供的文档信息,我们可以整理出一系列JavaScript的小技巧与知识点,这些技巧主要涵盖了事件处理、DOM操作、表单交互以及一些实用的代码片段等。下面将对这些知识点进行详细阐述: ### 1. 事件处理 - **事件源...

    JavaScript JavaScript JavaScript

    根据提供的文件信息,我们可以整理出一系列与JavaScript相关的知识点。这些知识点涵盖了事件处理、文档操作、样式控制、浏览器特性等多个方面。 ### 事件处理 #### 事件源与类型 - `event.srcElement`:获取触发...

    javascript实用代码大全

    - `document.getElementById(id)`: 根据ID获取单个元素。 - **事件绑定与解除**: - `document.all.xxx.detachEvent('onclick',a)`: 解除指定元素的点击事件监听器。 - **其他操作**: - `navigator.plugins`: ...

    实用的js代码 大全

    - `document.getElementsByName("r1")` 和 `document.getElementById(id)`:通过名称或ID查找元素。 - `timer = setInterval('scrollwindow()', delay)` 和 `clearInterval(timer)`:设置定时器和清除定时器。 - ...

    常用js代码大全.pdf

    - `document.getElementsByName("r1")` 和 `document.getElementById(id)`:通过名称或ID查找元素。 4. **定时器与计时**: - `setTimeout` 和 `clearTimeout`:设置或清除定时执行的函数。 - `setInterval` 和 ...

    javascript常用总结

    - `document.getElementsByTagName`, `document.getElementsByName`, `document.getElementById` 用于根据名称、标签或ID查找元素。 5. **定时器和页面交互**: - `setTimeout` 和 `clearTimeout` 用于设置定时...

    javascript大全

    - `document.getElementsByName("r1")`: 查询页面中name属性为"r1"的所有元素。 - `document.getElementById(id)`: 通过id查找页面中的唯一元素。 - `document.all.xxx.detachEvent('onclick',a)`: 移除绑定到元素上...

    javascriptYUI.pdf

    - `document.getElementById(id)` 和 `document.getElementsByName(name)`:根据ID或名称获取元素。 - `document.createElement(tagName)`:创建一个新的HTML元素。 - `document.elementFromPoint(x, y)`:根据...

Global site tag (gtag.js) - Google Analytics