码迷,mamicode.com
首页 > 编程语言 > 详细

javascript UniqueID属性

时间:2014-09-05 15:59:31      阅读:629      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   java   ar   strong   art   

    在Web页中的每一个HTML元素都一个ID属性,ID作为其标示,在我们的普通理解中它应该是unique的。但是HTML元素的ID属性是可写的,这就造成了我们非常可能人为的使ID的反复。按么假设ID反复了怎么办呢?我们又怎么来给HTML元素弄一个唯一的标示呢?

    因为IE对格式混乱(不完整的或有错嵌套关系)的HTML代码由极好的容错性,对于HTML元素的ID反复问题对它来说简直就是小菜一碟。假设出现这样的情况,比方:
bubuko.com,布布扣 <div id="divText">The first line.</div>
bubuko.com,布布扣 
<div id="divText">The second line.</div>


    这时的divText就不是一个对DIV元素的引用了,而变成了一个数组,当中包括两个元素,并按两个DIV元素在DHTML对象树种出现的次序排序。

    这种ID怎么用啊bubuko.com,布布扣? 是不是认为有种被IE晃点了的感觉呢?!

    幸好IE迷途知返,在5.0后为HTML元素提供了一个uniqueID的仅仅读属性。这下好,给它弄成readonly的了,看丫还乱不乱?!  还好真的不乱了,只是怎么说这个uniqueID有趣呢?由于uniqueID本身不提供default的值,就是说IE在解析完HTML代码构建了DHMTL树后,并不会给HTML元素分配uniqueID。而须要我们去訪问了HTML元素的uniqueID属性后,才会为其生成这个uniqueID的值。事实上就是lazy initialize技术,仅仅是放在这里认为比較好玩。对于uniqueNumber,它是相对于uniqueID的,uniqueID的格式是:ms__id/d+。即一个"ms__id"前缀加一个流水号。所以这个uniqueNumber就是单独表示那个流水号码的。

    uniqueID第二个好玩的地方是,document对象也具有这个属性,只是它和其他HTML的uniqueID属性的意义是全然不同的。当我们每调用一次document.uniqueID,系统就会返回一个新的uniqueID值,只是doucment没有uniqueNumber属性哈。

    这时我想起来我在用Popup窗体制作无限级菜单时,构造的__MenuCache__类中,自己实现了一个unique id的产生结构,就有些多此一举了bubuko.com,布布扣

#1楼 [楼主]   回复  引用  查看    

对了忘说了,正是由于HTML元素的uniqueID是lazy load方式生成的。所以不论什么一个HTML元素的uniqueID的详细取值和它在DHMTL树中的位置毫无关系,一个HTML元素的uniqueID就是仅仅保证在一个页面作用域中unique!

2005-02-19 02:19 | birdshome  

javascript UniqueID属性

标签:style   blog   http   color   os   java   ar   strong   art   

原文地址:http://www.cnblogs.com/mengfanrong/p/3958139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!