js中document.getElementByid、document.all和document.layers区分介绍 |
document.all是IE 4.0及以上版本的专有属性,是一个表示当前文档的所有对象的娄组,不仅包括页面上可见的实体对象,还包括一些不可见的对象,比如html注释等等 。在document.all数组里面,元素不分层次,是按照其在文档中出现的先后顺序,平行地罗列的 。所以可以用数字索引来引用到任何一个元素 。但比较常用的是用对象id来引用一个特定的对象,比如document.all["element"]这样 。 document.layers是Netscape 4.x专有的属性,是一个代表所有由储如<div><layer>等定位了的元素的数组 。通常也是用<div>或<layer>对象的id属性来引用的,但是这里面不包含除此以外的其它元素 。 其实这两个属性没什么可比性,大概你经常看到他们同时出时,这有一个历史原因 。在第四代浏览器出现的时候,标准相当混乱,Netscape和微软分别推出了它们的Navigator 4.x和IE 4.0,这两个浏览器的巨大差异,也使开发者面临了一个使网页跨浏览器兼容的噩梦 。而document.layer和document.all分别是两者一个最显著的标志,为了确定浏览者使用的什么浏览器,通常用是否存在document.layers和document.all来判断 。 新的统一的标准用document.getElementById等系列方法来引用DOM对象,而且Netscape 6.0以后放弃了layers特征,虽然IE继续保留了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时,设为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函数一次, } 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 |