document.all與getElementById、getElementsByName、getElementsByTagName用法區(qū)別-document.all第2/2頁
更新時間:2008年12月19日 13:06:54 作者:
Document.all[]是文檔中所有標簽組成的一個數(shù)組變量,包括了文檔對象中所有元素
[/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取用戶的多項愛好的情況)
復制代碼 代碼如下:
<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是互不相同的,如果出現(xiàn)不同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是由程序自動產(chǎn)生),或著一個
javascript初學者寫的程序,很有可能出現(xiàn)兩個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>
這樣最安全.
以下是我自己的測試:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
從上面可以看到我們在使用document.all的時候可能會返回一個值或多個值的情況,所以使用之前一定要判斷長度,要不然會出現(xiàn)錯誤。
如下面的問題:兩個函數(shù)對多個checkbox進行處理,分別執(zhí)行全部選中和取消全選功能如果按下面使用會出現(xiàn)什么問題呢?
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
看上面的代碼,當表單中有多個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>
相關(guān)文章
JS實現(xiàn)遍歷不規(guī)則多維數(shù)組的方法
這篇文章主要介紹了JS實現(xiàn)遍歷不規(guī)則多維數(shù)組的方法,涉及javascript數(shù)組遞歸遍歷相關(guān)實現(xiàn)與使用技巧,需要的朋友可以參考下2018-03-03
javascript中new Array()和var arr=[]用法區(qū)別
給大家分析一下在javascript中數(shù)組函數(shù)new Array()和var arr=[]用法區(qū)別,一起跟著學習一下吧。2017-12-12
weixin-java-miniapp微信小程序登陸具體實現(xiàn)
這篇文章主要介紹了weixin-java-miniapp微信小程序登陸具體實現(xiàn)的相關(guān)資料,包括用戶授權(quán)、獲取code、發(fā)送到后臺、后臺驗證并獲取openid和session_key、返回驗證結(jié)果等步驟,需要的朋友可以參考下2025-02-02
javascript將中國數(shù)字格式轉(zhuǎn)換成歐式數(shù)字格式的簡單實例
下面小編就為大家?guī)硪黄猨avascript將中國數(shù)字格式轉(zhuǎn)換成歐式數(shù)字格式的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
引入autocomplete組件時JS報未結(jié)束字符串常量錯誤
在引入jQuery的autocomplete組件時,遇到js報未結(jié)束字符串常量錯誤,原因及解決方法如下,大家可以參考下2014-03-03
JS中style.display和style.visibility的區(qū)別實例說明
下面的例子說明了這種區(qū)別:在這個例子中,divContent1和divContent2隱藏的時候用的是style.display=none,這時候,后面的div會向上移動,占據(jù)已經(jīng)隱藏的div的空間。divContent3和divContent4用的是style.visibility=hidden來隱藏,但是其隱藏后仍然占據(jù)原來的空間2013-03-03
解決JS請求路徑控制臺報錯?Failed?to?launch'xxx'?because?t
這篇文章主要介紹了JS請求路徑控制臺報錯?Failed?to?launch?‘xxx‘?because?the?scheme?does?not?have?a?registered?handler的問題,本文給大家分享最新完美解決方法,需要的朋友可以參考下2023-03-03

