挺好玩的uniqueID&uniqueNumber属性

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

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

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

    这样的ID怎么用啊 ? 是不是觉得有种被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的产生结构,就有些多此一举了


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
2月前
bgcolor属性
【10月更文挑战第7天】bgcolor属性。
19 2
|
7月前
|
XML JavaScript 前端开发
点的属性
在XML DOM中,每个节点都是对象,具有方法和属性,可通过JavaScript交互。关键属性有:nodeName、nodeValue和nodeType。nodeType是只读的,表示节点类型,如:元素(1),属性(2),文本(3),注释(8)和文档(9)。
|
3月前
name属性
name属性。
44 7
|
7月前
|
存储 编译器 C#
|
4月前
|
存储 安全 编译器
C#中的属性
C#中的属性
47 7
|
6月前
|
编译器 程序员 C++
C++一分钟之-属性(attributed)与属性语法
【6月更文挑战第28天】C++的属性为代码添加元数据,帮助编译器理解意图。C++11引入属性语法`[[attribute]]`,但支持取决于编译器。常见属性如`nodiscard`提示检查返回值,`maybe_unused`防止未使用警告。问题包括兼容性、过度依赖和误用。使用属性时需谨慎,确保团队共识,适时更新以适应C++新特性。通过示例展示了`nodiscard`和`likely/unlikely`的用法,强调正确使用属性能提升代码质量和性能。
90 13
|
6月前
|
XML JavaScript 前端开发
nodeType 属性
XML DOM 中的每个节点都是对象,具备方法和属性,可通过JavaScript处理。关键属性有:nodeName、nodeValue和nodeType。nodeType是只读的,表示节点类型,如:元素(1),属性(2),文本(3),注释(8)和文档(9)。
|
6月前
|
XML JavaScript 前端开发
nodeType 属性
XML DOM中的每个节点都是对象,具有方法和属性,可通过JavaScript处理。关键属性包括:nodeName、nodeValue和nodeType。nodeType是只读的,用于标识节点类型,如:元素(1)、属性(2)、文本(3)、注释(8)和文档(9)。
|
JavaScript 前端开发
添加新属性
添加新属性
85 0
关于Navisworks属性查看的问题(属性不显示)
关于Navisworks属性查看的问题(属性不显示)
关于Navisworks属性查看的问题(属性不显示)