zl程序教程

您现在的位置是:首页 >  后端

当前栏目

js中document.getElementByid、document.all和document.layers区分介绍

JS 介绍 all Document 区分 getElementById
2023-06-13 09:14:31 时间
document.all是IE4.0及以上版本的专有属性,是一个表示当前文档的所有对象的娄组,不仅包括页面上可见的实体对象,还包括一些不可见的对象,比如html注释等等。在document.all数组里面,元素不分层次,是按照其在文档中出现的先后顺序,平行地罗列的。所以可以用数字索引来引用到任何一个元素。但比较常用的是用对象id来引用一个特定的对象,比如document.all["element"]这样。
document.layers是Netscape4.x专有的属性,是一个代表所有由储如<div><layer>等定位了的元素的数组。通常也是用<div>或<layer>对象的id属性来引用的,但是这里面不包含除此以外的其它元素。
其实这两个属性没什么可比性,大概你经常看到他们同时出时,这有一个历史原因。在第四代浏览器出现的时候,标准相当混乱,Netscape和微软分别推出了它们的Navigator4.x和IE4.0,这两个浏览器的巨大差异,也使开发者面临了一个使网页跨浏览器兼容的噩梦。而document.layer和document.all分别是两者一个最显著的标志,为了确定浏览者使用的什么浏览器,通常用是否存在document.layers和document.all来判断。
新的统一的标准用document.getElementById等系列方法来引用DOM对象,而且Netscape6.0以后放弃了layers特征,虽然IE继续保留了document.all,但这最终没有成为DOM标准的一部分。希望document.layers和document.all能够早日作古,让标准早日深入人心!
代码示例:
复制代码代码如下:

<scriptlanguage="JavaScript">
functionshowtime()
{
varGetTime=newDate();//获取当前日期
varYears=GetTime.getYear();//取当前日期的年
varMonths=GetTime.getMongh();//取当前日期的月
varDays=GetTime.getDate();//取当前日期的日
varHours=GetTime.getHours();//取当前日期的小时
varMinutes=GetTime.getMinutes();//取当前日期的分钟
varSeconds=GetTime.getSeconds();//取当前日期的秒
varDn="AM";
if(Hours<=9)//小时少于9时,前面加0,
{
Hours="0"+Hours;
}
if(Hours==0||Hours>12)
{
Dn="PM";//小时大于12或0时,设为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()
}
elseif(document.all)
liveclock.innerHTML=NowTime
setTimeout("showtime()",1000)//每秒运行showtime函数一次,
}

document.all是IE下面的document属下的所有元素的集合
可以通过document.all.length来看到document下面的元素数量
document.all(index)后面的index参数是一个集合方法
如果index是string那么可以获得document下面具有id或name为index的元素如果只有一个的元素话返回这个元素如果有多个元素id或name是index的话就返回一个集合如果没有的话就返回null
这样并不好因为当你不知道有多少个id或name是index的元素时就比较容易出错.
如果index是数字的话那么会返回以0为基础的文档中第index个元素.元素的文档序列可以通过Element.sourceIndex来获取
document.getElementById(name)只返回第一个具有id或name为name的元素所以不是null就是一个元素而不会返回集合这样就大大减少了错误发生的可能性
如果需要返回一个id或name为name的元素集合的话就要用document.getElementsByName(name)来获取
document.getElementById
返回ID属性值与指定值相同的第一个对象,如果ID属于一个集合,getElementById方法返回集合中的第一个对象。
document.all
如果ID属于一个集合,document.all返回一个集合。而且只支持IE。
所以在使用IE的前提下,document.all(index)要生效需要保证index是唯一的
所以如果你想让你写的js脚本在目前的大多浏览器中使用,需要使用[公共标准]标准的Javascript