document.all與getElementById、getElementsByName、getElementsByTagName用法區(qū)別-getElementById
更新時(shí)間:2008年12月19日 13:14:08 作者:
HTML DOM 定義了多種查找元素的方法,除了 getElementById() 之外,還有 getElementsByName() 和 getElementsByTagName()。
不過,如果您需要查找文檔中的一個(gè)特定的元素,最有效的方法是 getElementById()。
不過要注意的是使用getElementById時(shí)對(duì)不同的瀏覽器執(zhí)行的結(jié)果可能是不同的,以下有相關(guān)說明
text1:
<input name="textName1" type="text" id="textName2" />
<br>
text2:
<input name="textName2" type="text" id="textName1" />
<br>
<input type="button" name="Submit" value="text1" onclick=alert(document.getElementById('textName2').value) />
<input type="button" name="Submit2" value="text2" onclick=alert(document.getElementById('textName1').value) />
我在IE中測(cè)試了上面的代碼,在第一個(gè)文本框中輸入1,在第二個(gè)文本框中輸入2,然后點(diǎn)下面的兩個(gè)按鈕,猜一下結(jié)果是什么?
我本意是按鈕1返回第一個(gè)文本框的值,按鈕2返回個(gè)文本框的值。
結(jié)果是兩個(gè)按鈕都返回了第一個(gè)文本框的值。
說明ie執(zhí)行document.getElementById(elementName)的時(shí)候,返回的是第一個(gè)name或者id等于elementName的對(duì)象,并不是按照ID來查找的。
在fireFox中不存在這樣的問題,fireFox執(zhí)行document.getElementById(elementName)的時(shí)候只查找id等于elementName的對(duì)象,如果不存在則返回null。
可能IE是考慮的兼容性的問題才這么做的。
以下是我測(cè)試所用的代碼:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
這個(gè)時(shí)候我在兩個(gè)text中輸入的值分別為:eee, www
IE中測(cè)試結(jié)果為:eee , eee
再看當(dāng)我把<input type="text" name="aaa" id="ccc" >中的id去除時(shí),也即上面代碼使用注釋中的內(nèi)容時(shí)
我同樣輸入eee, www
IE中測(cè)試結(jié)果為:www ,eee
仔細(xì)分析上面兩個(gè)測(cè)試的結(jié)果:得出結(jié)論是:每執(zhí)行g(shù)etElementById一次,會(huì)將web頁(yè)面中的所有表單按順序遍歷一次,同時(shí)查找id,name兩個(gè)值,如果存在所要找的id則不再繼續(xù)查找,如果沒有相應(yīng)的id與之對(duì)應(yīng)則看name值是否與之對(duì)應(yīng),如果有相應(yīng)的name與之對(duì)應(yīng),則不再繼續(xù)查找。也就是說:
ie執(zhí)行document.getElementById(elementName)的時(shí)候,返回的是第一個(gè)name或者id等于elementName的對(duì)象,并不是僅按照ID來查找的。
而同樣的兩個(gè)測(cè)試在firefox下第一個(gè)結(jié)果為eee,www,而第二個(gè)結(jié)果因?yàn)闆]有找到id="ccc"所以返回null
對(duì)于這個(gè)結(jié)果還可參見
http://www.dhdzp.com/article/16852.htm
他還對(duì)getElementById與getElementByName進(jìn)行了分析,值得一看。
不過要注意的是使用getElementById時(shí)對(duì)不同的瀏覽器執(zhí)行的結(jié)果可能是不同的,以下有相關(guān)說明
復(fù)制代碼 代碼如下:
text1:
<input name="textName1" type="text" id="textName2" />
<br>
text2:
<input name="textName2" type="text" id="textName1" />
<br>
<input type="button" name="Submit" value="text1" onclick=alert(document.getElementById('textName2').value) />
<input type="button" name="Submit2" value="text2" onclick=alert(document.getElementById('textName1').value) />
我在IE中測(cè)試了上面的代碼,在第一個(gè)文本框中輸入1,在第二個(gè)文本框中輸入2,然后點(diǎn)下面的兩個(gè)按鈕,猜一下結(jié)果是什么?
我本意是按鈕1返回第一個(gè)文本框的值,按鈕2返回個(gè)文本框的值。
結(jié)果是兩個(gè)按鈕都返回了第一個(gè)文本框的值。
說明ie執(zhí)行document.getElementById(elementName)的時(shí)候,返回的是第一個(gè)name或者id等于elementName的對(duì)象,并不是按照ID來查找的。
在fireFox中不存在這樣的問題,fireFox執(zhí)行document.getElementById(elementName)的時(shí)候只查找id等于elementName的對(duì)象,如果不存在則返回null。
可能IE是考慮的兼容性的問題才這么做的。
以下是我測(cè)試所用的代碼:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
這個(gè)時(shí)候我在兩個(gè)text中輸入的值分別為:eee, www
IE中測(cè)試結(jié)果為:eee , eee
再看當(dāng)我把<input type="text" name="aaa" id="ccc" >中的id去除時(shí),也即上面代碼使用注釋中的內(nèi)容時(shí)
我同樣輸入eee, www
IE中測(cè)試結(jié)果為:www ,eee
仔細(xì)分析上面兩個(gè)測(cè)試的結(jié)果:得出結(jié)論是:每執(zhí)行g(shù)etElementById一次,會(huì)將web頁(yè)面中的所有表單按順序遍歷一次,同時(shí)查找id,name兩個(gè)值,如果存在所要找的id則不再繼續(xù)查找,如果沒有相應(yīng)的id與之對(duì)應(yīng)則看name值是否與之對(duì)應(yīng),如果有相應(yīng)的name與之對(duì)應(yīng),則不再繼續(xù)查找。也就是說:
ie執(zhí)行document.getElementById(elementName)的時(shí)候,返回的是第一個(gè)name或者id等于elementName的對(duì)象,并不是僅按照ID來查找的。
而同樣的兩個(gè)測(cè)試在firefox下第一個(gè)結(jié)果為eee,www,而第二個(gè)結(jié)果因?yàn)闆]有找到id="ccc"所以返回null
對(duì)于這個(gè)結(jié)果還可參見
http://www.dhdzp.com/article/16852.htm
他還對(duì)getElementById與getElementByName進(jìn)行了分析,值得一看。
相關(guān)文章
javascript仿163網(wǎng)盤無刷新文件上傳系統(tǒng)
這個(gè)仿163網(wǎng)盤無刷新文件上傳系統(tǒng),并沒有用使用.net的控件,完全的手工制作。2008-10-10
javascript驗(yàn)證香港身份證的格式或真實(shí)性
本文分享了利用javascript驗(yàn)證香港身份證的格式或真實(shí)性的代碼,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
js中如何將多層嵌套的數(shù)組轉(zhuǎn)換為一層數(shù)組
這篇文章主要介紹了js中如何將多層嵌套的數(shù)組轉(zhuǎn)換為一層數(shù)組問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
微信小程序的授權(quán)實(shí)現(xiàn)過程解析
這篇文章主要介紹了微信小程序的授權(quán)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
EditPlus 正則表達(dá)式 實(shí)戰(zhàn)(3)
這篇文章主要介紹了EditPlus 正則表達(dá)式 實(shí)戰(zhàn)(3)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
JavaScript中立即執(zhí)行函數(shù)實(shí)例詳解
javascript和其他編程語言相比比較隨意,所以javascript代碼中充滿各種奇葩的寫法,有時(shí)霧里看花,當(dāng)然,能理解各型各色的寫法也是對(duì)javascript語言特性更進(jìn)一步的深入理解。這篇文章主要給大家介紹了關(guān)于JavaScript中立即執(zhí)行函數(shù)的相關(guān)資料,需要的朋友可以參考下。2017-11-11
js操縱跨frame的聯(lián)動(dòng)select下拉選項(xiàng)實(shí)例介紹
運(yùn)用HTML、CSS以及Javascript相關(guān)知識(shí),編寫多窗口多菜單的內(nèi)容聯(lián)動(dòng),具體思路及代碼如下,感興趣的朋友可以參考下哈,希望大家有所幫助2013-05-05
JavaScript提取元素中第一個(gè)子元素的實(shí)現(xiàn)方法
本文主要介紹了JavaScript提取元素中第一個(gè)子元素的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

