当前位置: 首页 > news >正文

javascript UniqueID属性

    在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的产生结构,就有些多此一举了

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

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

2005-02-19 02:19 | birdshome  

相关文章:

  • 与Susan Fowler探讨生产就绪微服务之问答
  • Android 老罗视频教程笔记
  • apache 开启压缩功能
  • Porter/Duff,图片加遮罩setColorFilter
  • MySQL基础备忘(3)之update多表更新
  • iPhone 丢失
  • Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
  • Ant多渠道批量打包
  • CCF201409-4 最优配餐(100分)
  • ios的delegate机制
  • 同义词
  • MPLS和LDP标签分发
  • JSON 生成 C# Model
  • Golang 知识点总结
  • [raspberry pi3] 串口线使用
  • 【RocksDB】TransactionDB源码分析
  • go append函数以及写入
  • Java 内存分配及垃圾回收机制初探
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JWT究竟是什么呢?
  • mysql 5.6 原生Online DDL解析
  • nodejs:开发并发布一个nodejs包
  • node和express搭建代理服务器(源码)
  • Sass 快速入门教程
  • SpingCloudBus整合RabbitMQ
  • swift基础之_对象 实例方法 对象方法。
  • Vue 动态创建 component
  • vue 配置sass、scss全局变量
  • 诡异!React stopPropagation失灵
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信公众号开发小记——5.python微信红包
  • 一个SAP顾问在美国的这些年
  • NLPIR智能语义技术让大数据挖掘更简单
  • 浅谈sql中的in与not in,exists与not exists的区别
  • # 数论-逆元
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #stm32整理(一)flash读写
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (初研) Sentence-embedding fine-tune notebook
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (四)模仿学习-完成后台管理页面查询
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 简单实现MD5
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net6使用Sejil可视化日志
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net多线程总结
  • [51nod1610]路径计数