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