document.all與getElementById、getElementsByName、getElementsByTagName用法區(qū)別-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) //根據(jù)name取value
alert(document.all.bbb.value) //根據(jù)id取 value
</script>
代碼2:
但是常常name可以相同(如:用checkbox取用戶(hù)的多項(xiàng)愛(ài)好的情況)
<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) //這行代碼會(huì)失敗
</script>
代碼3:
理論上一個(gè)頁(yè)面中的id是互不相同的,如果出現(xiàn)不同tags有相同的id
document.all.id 就會(huì)失敗,就象這樣:
<input id=aaa value=a1>
<input id=aaa value=a2>
<script language=Jscript>
alert(document.all.aaa.value) //顯示 undefined 而不是 a1或者a2
</script>
代碼4:
對(duì)于一個(gè)復(fù)雜的頁(yè)面(代碼很長(zhǎng),或者id是由程序自動(dòng)產(chǎn)生),或著一個(gè)
javascript初學(xué)者寫(xiě)的程序,很有可能出現(xiàn)兩個(gè)tags有相同id的情況。
為了編程的時(shí)候不出錯(cuò),我推薦這樣的寫(xiě)法:
<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>
這樣最安全.
以下是我自己的測(cè)試:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
從上面可以看到我們?cè)谑褂胐ocument.all的時(shí)候可能會(huì)返回一個(gè)值或多個(gè)值的情況,所以使用之前一定要判斷長(zhǎng)度,要不然會(huì)出現(xiàn)錯(cuò)誤。
如下面的問(wèn)題:兩個(gè)函數(shù)對(duì)多個(gè)checkbox進(jìn)行處理,分別執(zhí)行全部選中和取消全選功能如果按下面使用會(huì)出現(xiàn)什么問(wèn)題呢?
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
看上面的代碼,當(dāng)表單中有多個(gè)checkbox的時(shí)候是沒(méi)有問(wèn)題的,但當(dāng)其中只有一個(gè)checkbox的時(shí)候就會(huì)有問(wèn)題,即點(diǎn)全選的時(shí)候不起作用,因?yàn)楫?dāng)其中只有一個(gè)checkbox的時(shí)候不再用document.all["huang"][0].checked來(lái)訪問(wèn),而是直接用document.all["huang"].checked來(lái)訪問(wèn)了
看當(dāng)只有一個(gè)checkbox的時(shí)候應(yīng)改成下面代碼
<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>
相關(guān)文章
JS實(shí)現(xiàn)遍歷不規(guī)則多維數(shù)組的方法
這篇文章主要介紹了JS實(shí)現(xiàn)遍歷不規(guī)則多維數(shù)組的方法,涉及javascript數(shù)組遞歸遍歷相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2018-03-03
javascript中new Array()和var arr=[]用法區(qū)別
給大家分析一下在javascript中數(shù)組函數(shù)new Array()和var arr=[]用法區(qū)別,一起跟著學(xué)習(xí)一下吧。2017-12-12
js對(duì)象實(shí)現(xiàn)數(shù)據(jù)分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了js對(duì)象實(shí)現(xiàn)數(shù)據(jù)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
weixin-java-miniapp微信小程序登陸具體實(shí)現(xiàn)
這篇文章主要介紹了weixin-java-miniapp微信小程序登陸具體實(shí)現(xiàn)的相關(guān)資料,包括用戶(hù)授權(quán)、獲取code、發(fā)送到后臺(tái)、后臺(tái)驗(yàn)證并獲取openid和session_key、返回驗(yàn)證結(jié)果等步驟,需要的朋友可以參考下2025-02-02
JS使用for in有序獲取對(duì)象數(shù)據(jù)
這篇文章主要介紹了JS使用for in有序獲取對(duì)象數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
javascript將中國(guó)數(shù)字格式轉(zhuǎn)換成歐式數(shù)字格式的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇javascript將中國(guó)數(shù)字格式轉(zhuǎn)換成歐式數(shù)字格式的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
引入autocomplete組件時(shí)JS報(bào)未結(jié)束字符串常量錯(cuò)誤
在引入jQuery的autocomplete組件時(shí),遇到j(luò)s報(bào)未結(jié)束字符串常量錯(cuò)誤,原因及解決方法如下,大家可以參考下2014-03-03
JS中style.display和style.visibility的區(qū)別實(shí)例說(shuō)明
下面的例子說(shuō)明了這種區(qū)別:在這個(gè)例子中,divContent1和divContent2隱藏的時(shí)候用的是style.display=none,這時(shí)候,后面的div會(huì)向上移動(dòng),占據(jù)已經(jīng)隱藏的div的空間。divContent3和divContent4用的是style.visibility=hidden來(lái)隱藏,但是其隱藏后仍然占據(jù)原來(lái)的空間2013-03-03
解決JS請(qǐng)求路徑控制臺(tái)報(bào)錯(cuò)?Failed?to?launch'xxx'?because?t
這篇文章主要介紹了JS請(qǐng)求路徑控制臺(tái)報(bào)錯(cuò)?Failed?to?launch?‘xxx‘?because?the?scheme?does?not?have?a?registered?handler的問(wèn)題,本文給大家分享最新完美解決方法,需要的朋友可以參考下2023-03-03

