js中document.getElementByid、document.all和document.layers區(qū)分介紹
更新時(shí)間:2011年12月08日 22:12:03 作者:
document.getElementById 是公共標(biāo)準(zhǔn),被目前的所有主流瀏覽器支持,document.all只有IE支持,document.layers是Netscape 4.x專(zhuān)有的屬性
document.all是IE 4.0及以上版本的專(zhuān)有屬性,是一個(gè)表示當(dāng)前文檔的所有對(duì)象的婁組,不僅包括頁(yè)面上可見(jiàn)的實(shí)體對(duì)象,還包括一些不可見(jiàn)的對(duì)象,比如html注釋等等。在document.all數(shù)組里面,元素不分層次,是按照其在文檔中出現(xiàn)的先后順序,平行地羅列的。所以可以用數(shù)字索引來(lái)引用到任何一個(gè)元素。但比較常用的是用對(duì)象id來(lái)引用一個(gè)特定的對(duì)象,比如document.all["element"]這樣。
document.layers是Netscape 4.x專(zhuān)有的屬性,是一個(gè)代表所有由儲(chǔ)如<div><layer>等定位了的元素的數(shù)組。通常也是用<div>或<layer>對(duì)象的id屬性來(lái)引用的,但是這里面不包含除此以外的其它元素。
其實(shí)這兩個(gè)屬性沒(méi)什么可比性,大概你經(jīng)??吹剿麄兺瑫r(shí)出時(shí),這有一個(gè)歷史原因。在第四代瀏覽器出現(xiàn)的時(shí)候,標(biāo)準(zhǔn)相當(dāng)混亂,Netscape和微軟分別推出了它們的Navigator 4.x和IE 4.0,這兩個(gè)瀏覽器的巨大差異,也使開(kāi)發(fā)者面臨了一個(gè)使網(wǎng)頁(yè)跨瀏覽器兼容的噩夢(mèng)。而document.layer和document.all分別是兩者一個(gè)最顯著的標(biāo)志,為了確定瀏覽者使用的什么瀏覽器,通常用是否存在document.layers和document.all來(lái)判斷。
新的統(tǒng)一的標(biāo)準(zhǔn)用document.getElementById等系列方法來(lái)引用DOM對(duì)象,而且Netscape 6.0以后放棄了layers特征,雖然IE繼續(xù)保留了document.all,但這最終沒(méi)有成為DOM標(biāo)準(zhǔn)的一部分。希望document.layers和document.all能夠早日作古,讓標(biāo)準(zhǔn)早日深入人心!
代碼示例:
<script language="JavaScript">
function showtime()
{
var GetTime=newDate(); //獲取當(dāng)前日期
var Years=GetTime.getYear(); // 取當(dāng)前日期的年
var Months=GetTime.getMongh();// 取當(dāng)前日期的月
var Days=GetTime.getDate();// 取當(dāng)前日期的日
var Hours=GetTime.getHours();// 取當(dāng)前日期的小時(shí)
var Minutes=GetTime.getMinutes();// 取當(dāng)前日期的分鐘
var Seconds=GetTime.getSeconds();// 取當(dāng)前日期的秒
var Dn='AM';
if(Hours<=9) //小時(shí)少于9時(shí),前面加0,
{
Hours='0'+Hours;
}
if(Hours==0||Hours>12)
{
Dn='PM'; //小時(shí)大于12或0時(shí),設(shè)為PM(下午)
}
if(Minutes<=9)
{
Minutes='0'+Minutes;
}
if(Seconds<=9)
{
Seconds='0'+Seconds;//秒少于9時(shí),前面加0,
}
NowTime=Years+'年'+Months+'月'+Days+'日 '+Hours+':'+Minutes+':'+Seconds+''+Dn; //當(dāng)前日期的字符串
if(document.layers){ //不同瀏覽器下, 將當(dāng)前日期的字符串顯示出來(lái).
document.layers.liveclock.document.write(NowTime)
document.layers.liveclock.document.close()
}
else if(document.all)
liveclock.innerHTML=NowTime
setTimeout('showtime()',1000) //每秒運(yùn)行showtime函數(shù)一次,
}
document.all是IE下面的document屬下的所有元素的集合
可以通過(guò)document.all.length來(lái)看到document下面的元素?cái)?shù)量
document.all(index)后面的index參數(shù)是一個(gè)集合方法
如果index是string那么可以獲得document下面具有id或name為index的元素 如果只有一個(gè)的元素話返回這個(gè)元素 如果有多個(gè)元素id或name是index的話就返回一個(gè)集合 如果沒(méi)有的話就返回null
這樣并不好 因?yàn)楫?dāng)你不知道有多少個(gè)id或name是index的元素時(shí) 就比較容易出錯(cuò).
如果index是數(shù)字的話 那么會(huì)返回以0為基礎(chǔ)的 文檔中第index個(gè)元素. 元素的文檔序列可以通過(guò)Element.sourceIndex來(lái)獲取
document.getElementById(name) 只返回第一個(gè)具有id或name為name的元素 所以不是null就是一個(gè)元素 而不會(huì)返回集合 這樣就大大減少了錯(cuò)誤發(fā)生的可能性
如果需要返回一個(gè)id或name為name的元素集合的話 就要用 document.getElementsByName(name)來(lái)獲取
document.getElementById
返回 ID 屬性值與指定值相同的第一個(gè)對(duì)象,如果 ID 屬于一個(gè)集合,getElementById 方法返回集合中的第一個(gè)對(duì)象。
document.all
如果 ID 屬于一個(gè)集合,document.all返回一個(gè)集合。而且只支持IE。
所以在使用IE的前提下,document.all(index)要生效需要保證index是唯一的
所以如果你想讓你寫(xiě)的js腳本在目前的大多瀏覽器中使用,需要使用[公共標(biāo)準(zhǔn)] 標(biāo)準(zhǔn)的Javascript
document.layers是Netscape 4.x專(zhuān)有的屬性,是一個(gè)代表所有由儲(chǔ)如<div><layer>等定位了的元素的數(shù)組。通常也是用<div>或<layer>對(duì)象的id屬性來(lái)引用的,但是這里面不包含除此以外的其它元素。
其實(shí)這兩個(gè)屬性沒(méi)什么可比性,大概你經(jīng)??吹剿麄兺瑫r(shí)出時(shí),這有一個(gè)歷史原因。在第四代瀏覽器出現(xiàn)的時(shí)候,標(biāo)準(zhǔn)相當(dāng)混亂,Netscape和微軟分別推出了它們的Navigator 4.x和IE 4.0,這兩個(gè)瀏覽器的巨大差異,也使開(kāi)發(fā)者面臨了一個(gè)使網(wǎng)頁(yè)跨瀏覽器兼容的噩夢(mèng)。而document.layer和document.all分別是兩者一個(gè)最顯著的標(biāo)志,為了確定瀏覽者使用的什么瀏覽器,通常用是否存在document.layers和document.all來(lái)判斷。
新的統(tǒng)一的標(biāo)準(zhǔn)用document.getElementById等系列方法來(lái)引用DOM對(duì)象,而且Netscape 6.0以后放棄了layers特征,雖然IE繼續(xù)保留了document.all,但這最終沒(méi)有成為DOM標(biāo)準(zhǔn)的一部分。希望document.layers和document.all能夠早日作古,讓標(biāo)準(zhǔn)早日深入人心!
代碼示例:
復(fù)制代碼 代碼如下:
<script language="JavaScript">
function showtime()
{
var GetTime=newDate(); //獲取當(dāng)前日期
var Years=GetTime.getYear(); // 取當(dāng)前日期的年
var Months=GetTime.getMongh();// 取當(dāng)前日期的月
var Days=GetTime.getDate();// 取當(dāng)前日期的日
var Hours=GetTime.getHours();// 取當(dāng)前日期的小時(shí)
var Minutes=GetTime.getMinutes();// 取當(dāng)前日期的分鐘
var Seconds=GetTime.getSeconds();// 取當(dāng)前日期的秒
var Dn='AM';
if(Hours<=9) //小時(shí)少于9時(shí),前面加0,
{
Hours='0'+Hours;
}
if(Hours==0||Hours>12)
{
Dn='PM'; //小時(shí)大于12或0時(shí),設(shè)為PM(下午)
}
if(Minutes<=9)
{
Minutes='0'+Minutes;
}
if(Seconds<=9)
{
Seconds='0'+Seconds;//秒少于9時(shí),前面加0,
}
NowTime=Years+'年'+Months+'月'+Days+'日 '+Hours+':'+Minutes+':'+Seconds+''+Dn; //當(dāng)前日期的字符串
if(document.layers){ //不同瀏覽器下, 將當(dāng)前日期的字符串顯示出來(lái).
document.layers.liveclock.document.write(NowTime)
document.layers.liveclock.document.close()
}
else if(document.all)
liveclock.innerHTML=NowTime
setTimeout('showtime()',1000) //每秒運(yùn)行showtime函數(shù)一次,
}
document.all是IE下面的document屬下的所有元素的集合
可以通過(guò)document.all.length來(lái)看到document下面的元素?cái)?shù)量
document.all(index)后面的index參數(shù)是一個(gè)集合方法
如果index是string那么可以獲得document下面具有id或name為index的元素 如果只有一個(gè)的元素話返回這個(gè)元素 如果有多個(gè)元素id或name是index的話就返回一個(gè)集合 如果沒(méi)有的話就返回null
這樣并不好 因?yàn)楫?dāng)你不知道有多少個(gè)id或name是index的元素時(shí) 就比較容易出錯(cuò).
如果index是數(shù)字的話 那么會(huì)返回以0為基礎(chǔ)的 文檔中第index個(gè)元素. 元素的文檔序列可以通過(guò)Element.sourceIndex來(lái)獲取
document.getElementById(name) 只返回第一個(gè)具有id或name為name的元素 所以不是null就是一個(gè)元素 而不會(huì)返回集合 這樣就大大減少了錯(cuò)誤發(fā)生的可能性
如果需要返回一個(gè)id或name為name的元素集合的話 就要用 document.getElementsByName(name)來(lái)獲取
document.getElementById
返回 ID 屬性值與指定值相同的第一個(gè)對(duì)象,如果 ID 屬于一個(gè)集合,getElementById 方法返回集合中的第一個(gè)對(duì)象。
document.all
如果 ID 屬于一個(gè)集合,document.all返回一個(gè)集合。而且只支持IE。
所以在使用IE的前提下,document.all(index)要生效需要保證index是唯一的
所以如果你想讓你寫(xiě)的js腳本在目前的大多瀏覽器中使用,需要使用[公共標(biāo)準(zhǔn)] 標(biāo)準(zhǔn)的Javascript
您可能感興趣的文章:
- js中document.getElementById(id)的具體用法
- javascript typeof id===''string''?document.getElementById(id):id解釋
- 原生js操作checkbox用document.getElementById實(shí)現(xiàn)
- js querySelector和getElementById通過(guò)id獲取元素的區(qū)別
- getElementByIdx_x js自定義getElementById函數(shù)
- JavaScript中也使用$美元符號(hào)來(lái)代替document.getElementById
- javascript代碼在ie8里報(bào)錯(cuò) document.getElementById(...) 為空或不是對(duì)象的解決方法
- javascript getElementById 使用方法及用法
- js中的getElementById的使用方法
相關(guān)文章
使用js獲取url中的參數(shù)并返回一個(gè)對(duì)象方式
這篇文章主要介紹了使用js獲取url中的參數(shù)并返回一個(gè)對(duì)象方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01手寫(xiě)Spirit防抖函數(shù)underscore和節(jié)流函數(shù)lodash
這篇文章主要介紹了手寫(xiě)Spirit防抖函數(shù)underscore和節(jié)流函數(shù)lodash,接下來(lái)將會(huì)帶你們了解下這兩者的區(qū)別,以及我們?cè)撊绾问謱?xiě)實(shí)現(xiàn)這兩個(gè)函數(shù)2022-03-03JavaScript實(shí)現(xiàn)表格快速變色效果代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)表格快速變色效果的方法,通過(guò)javascript數(shù)組遍歷結(jié)合時(shí)間函數(shù)來(lái)實(shí)現(xiàn)表格快速變色的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08javascript自然分類(lèi)法算法實(shí)現(xiàn)代碼
這篇文章介紹了javascript自然分類(lèi)法算法實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-10-10使用JavaScript實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了使用JavaScript實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09JS實(shí)現(xiàn)根據(jù)指定值刪除數(shù)組中的元素操作示例
這篇文章主要介紹了JS實(shí)現(xiàn)根據(jù)指定值刪除數(shù)組中的元素操作,結(jié)合實(shí)例形式總結(jié)分析了JavaScript針對(duì)數(shù)組元素刪除操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-08-08記錄幾個(gè)javascript有關(guān)的小細(xì)節(jié)
記錄幾個(gè)javascript有關(guān)的小細(xì)節(jié)...2007-04-04