Html:对Web页面元素的绝对唯一引用方法

2016-02-19 21:12 21 1 收藏

今天图老师小编给大家展示的是Html:对Web页面元素的绝对唯一引用方法,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

【 tulaoshi.com - Web开发 】

    我们知道要在Web页面中引用一个HTML元素,最简单的方法就是使用getElementById方法,或其类似的一组getElementsByXxx方法。可是这里需要注意的是,这些方法其实都不能完全绝对的唯一确定对一个元素的引用。

    至于getElementsByXxx我们不说了,它本身就是getElements,很明白了,那么getElementById也不能唯一确定一个元素吗?当然是,不能。由于html的不严格性,在同一页面中重复元素的id是被允许的。关于id的更多细节问题,请参考:细说HTML元素的ID和Name属性的区别,一文。

    那么怎么才能唯一的确定对一个元素的引用呢?使用DOM之间的引用结构来查找?这个方法虽然是行的,但是可操作性是在是太差了。这里需要说说我原来介绍过的html属性uniqueID,它是微软为HTML元素扩充的专有属性,不遵循W3C的规范。这个uniqueID有一些undocumented的特性,uniqueID其实也是和id类似的一套元素表示体系,只是它是纯客户端的标示方案。它的一些细节在前面一个链接中已经介绍了,下面我们主要说说它的特性。

    由于它是元素的表示体系,那么它也因该和id的特性一样啰?实际上确实是这样,除了uniqueID的生成方式和id完全不同外,uniqueID其它表现和id是一样的。我们可以通过这个uniqueID直接引用元素,就像id一样,只是由于uniqueID是动态生成的,所以我们也只能动态使用这个uniqueID,而不能以literal形式来使用。下面是一个使用示例:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

var g_ELEMENTS = {};
var span = document.createElement('SPAN');
document.body.appendChild(span);
g_ELEMENTS[span.uniqueID] = span;
    这样我们就通过uniqueID将span缓存起来了,已有要引用这个span,就可以这样:
var elements = g_ELEMENTS.GetExpandoKeys();
for ( var i=0 ; i elements.length ; ++i )
{
    var element = eval(elmenets[i]);
    // todo: other logic
}
    除了使用eval来引用这个uniqueID外,getElementById也有一个undocumented的特性,就是它也支持uniqueID,这样一来,我们就可以使用getElementById(elements[i])来绝对唯一的引用一个页面元素。

    可能有人会疑惑,这个uniqueID到底有什么用啊?其实在动态生成大量页面元素时,使用uniqueID可以非常方面的为元素生成真正的unique的id,它的意义就在于可以将这些动态元素cache起来,做统一管理。特别是在实现动态在的TreeView时,如果合理使用uniqueID到来的好处,就可以避免很多需要对树进行反复递归便利才能完成的工作。还有,uniqueID是IE的DOM提供的原生解决方案,比自己去做unique标示要方面高效的多,并且还利于对元素检索。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

    参考信息:GetExpandoKeys(),另外就是本文不适合FireFox及其它非IE内核浏览器。

来源:http://www.tulaoshi.com/n/20160219/1625557.html

延伸阅读
Excel的引用分为绝对引用与相对引用,对一个单元格的引用实际上有四种组合,这里与大家分享下如何在这四种组合之间快速切换。 手动修改引用的类型效率是比较低的,下面与大家分享下快速更改引用类型的方法,从编辑栏中选中需要更改引用类型的内容,按下“F4”键,变为行列都是绝对引用,再连续按“F4”键就可以在列相对引...
标签: Web开发
今天做东东的时候要用js创建html元素然后动态给该元素添加方法,走了不少弯路。最后把解决方法发布,让大家以后少走弯路。 js文件 function CheckNull(id) {      //DoSomeThing    } var CheckNewNull= function(id) {     return function(){        ...
标签: Web开发
作为一种标记语言,HTML 在互联网中的广泛采用佐证了它在发布内容方面的实用性是无与伦比的。HTML 向结构内容提供各种标记,其中包括处于不同级的标题标记,例如从 h1 到 h6,或定义列表的标记,例如 ul 或 ol。HTML 文档是简单的文本文档,可以使用任何编辑器加以创建或从当前办公产品套件中导出的文档进行创建。HTML 缺乏对一些项目(例...
标签: Web开发
HTML5在页面结构,多媒体处理等多方面都与以往的HTML有很大的不同。在本教程中,将带领大家使用HTML5,CSS3及PHP实际设计一个符合HTML5标准的简单的表单提交网页,读者可以从中学习到HTML5 新的表单页面的基本元素。本文的读者为有一定HTML,CSS及PHP的读者学习 表单的设计草图 由于本文不是教photoshop制作的文章,因此只是把设计的...
标签: excel
excel中绝对引用,相对引用,与快捷键相对引用图文教程   我们在用excel处理数据的过程中,经常要用到拖拽单元格以进行公式复制,引用的数据是已有单元格中的数据,我们可能需要: 1)绝对引用,就是指引用某一单元格的数值,不随着拖拽而变成引用了其他数值 2)也可能需要相对引用,只引用行数据或列数据 3)还有这几种...

经验教程

513

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部