`
daidalei321
  • 浏览: 109446 次
  • 性别: 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 Example        Example Heading     This is a paragraph. It is only a paragraph.   Yet another paragraph.   This final paragraph has special emphasis.         [Ctrl+A 全选 ...

    java代码大全

    后面还有很多很多代码…… ...document.getElementsByName("r1"); document.getElementById(id); • 定时 timer=setInterval(‘scrollwindow()‘,delay); clearInterval(timer); 后面还有很多很多……

    JavaScript权威指南

    JavaScript权威指南 犀牛书 Chapter 1. Introduction to JavaScript Section 1.1. JavaScript Myths Section 1.2. Versions of JavaScript Section 1.3. Client-Side JavaScript Section 1.4. JavaScript ...

    js使用小技巧

    document.getElementsByName("r1"); document.getElementById(id); 定时 timer=setInterval("scrollwindow()",delay); clearInterval(timer); UNCODE编码 escape() ,unescape 父对象 obj.parentElement...

    解决 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.getElementById(ID) //获得指定ID值的对象 document.getElementsByName(Name) //获得指定Name值的对象数组 document.all[] //很智能的东东 不过非WEB标准 document....

    浏览器兼容的JS写法总结

     (2)解决方法:使用getElementsByName(name),getElementById(id)等来替代。 2. 集合类对象问题  (1)现有问题:IE中对许多集合类对象取用时可以用 (),但在Firefox只能用[]。  如:IE中可以使用document.forms(...

    JS实现复选框的全选和批量删除功能

    如图示: 功能描述:在勾选了全选时,所有的商品都会勾选,在取消全选时,取消所有物品的勾选。... var flag=document.getElementById(allChecks).checked; var cks=document.getElementsByName(check);

    javascript 全选与全取消功能的实现代码

    代码如下: &lt;... &lt;head&gt; &lt;... [removed] function selectAll() { var allCheckBoxs = document.getElementsByName(“coffee”); var desc = document.getElementById(“like”); if(desc.va

    JS实现点餐自动选择框(案例分析)

    效果图: 1. 目标需求(一共两个): ...2.思路分析: ...3.js实现步骤: 上方全选/全不选选择框,实现步骤 ...var chkAll=document.getElementById('checkAll'); var chkList=document.getElementsByName

    JS操作input标签属性checkbox全选的实现代码

    if(document.getElementById("controlAll").checked){//判断当id为controlAll的标签是否被选中 for(var i=0;i&lt;checklist.length;i++){ checklist[i].checked = true;//当被选中时,则获取所有na

    js checkbox全选并将获取值放到input里边

    var aa=document.getElementsByName(itemName); var bb=document.getElementById(‘arrayid’); if(e.checked==true){ tem += thisvalue+”,”; } else{ tem = tem.replace(thisvalue+”,”,””); } bb.value=tem

Global site tag (gtag.js) - Google Analytics