itlw.Page.prototype.$J = function(element){
if(!this.root) return;
var selectId = "#"+element;
if(this.root.querySelector){
return this.root.querySelector(selectId);
}else{
//有什么方法可以跟据ID得到Element
}
}
现在的业务是这样的:html有多个顶层div,这些div的id是唯一的。每个div有大量的html元素,如何在指定的顶层div里面快速地找到指定id的元素(就像document.getElementById("")功能)?首先,因为div里面不支持getElementById方法,其次,要找的这个元素不知道它任何信息只知道它的Id,如果div里有多个相同id的元素可以返回第一个满足条件的元素。现在我知道IE8以上、firefox都实现了dom2规范的 querySelector、querySelectorAll原生方法,可以快速通过id找到元素满足要求,现在就是IE6/IE7不知道要如何实现,注意:顶层div里会有很多的元素,可能有很多层,漫无目的的循环就怕性能太差,请大家说说有什么快速定位的方案吗?我看了jquery里的Selector,没怎么看懂,好像一到按ID查找就去到document.getElementById的原生方法里去了,但我要求是只要顶层div里找,因为多个顶层div可能会有很多相同的ID的元素,用document.getElementById找的话会找到第一个符合条件元素,这不是我想要的。实现意见: 首选IE里的原生方法,其次xpath什么的不知道能不能用得上。
if(!this.root) return;
var selectId = "#"+element;
if(this.root.querySelector){
return this.root.querySelector(selectId);
}else{
//有什么方法可以跟据ID得到Element
}
}
现在的业务是这样的:html有多个顶层div,这些div的id是唯一的。每个div有大量的html元素,如何在指定的顶层div里面快速地找到指定id的元素(就像document.getElementById("")功能)?首先,因为div里面不支持getElementById方法,其次,要找的这个元素不知道它任何信息只知道它的Id,如果div里有多个相同id的元素可以返回第一个满足条件的元素。现在我知道IE8以上、firefox都实现了dom2规范的 querySelector、querySelectorAll原生方法,可以快速通过id找到元素满足要求,现在就是IE6/IE7不知道要如何实现,注意:顶层div里会有很多的元素,可能有很多层,漫无目的的循环就怕性能太差,请大家说说有什么快速定位的方案吗?我看了jquery里的Selector,没怎么看懂,好像一到按ID查找就去到document.getElementById的原生方法里去了,但我要求是只要顶层div里找,因为多个顶层div可能会有很多相同的ID的元素,用document.getElementById找的话会找到第一个符合条件元素,这不是我想要的。实现意见: 首选IE里的原生方法,其次xpath什么的不知道能不能用得上。
for(int i=0;i<objs.length;i++){
if(objs[i].id == selectId){
return objs[i];
}
}
return null;
可能你没注意原贴:“漫无目的的循环就怕性能太差,请大家说说有什么快速定位的方案吗?”这句话。
但可以肯定的是this.root下的id是唯一的,如果不唯一就取第一个找到的元素就好了。但整个document有多个拥有this.root的div。引用document.getElementById就可能会找到其它div元素中的符合条件的元素了。所以不能用getElementById。
http://localhost:8888/content/speedTest/index.html
这就是他效率低下的原因。
我也正是因为他的效率,从他的崇拜者变成了反对者
还有就是个“倒寻”,
用getElementById获取,然后倒着找这个元素的parentNode||parentElement看他是否==你指定的那个父元素,如果不是,继续寻找父元素,直到寻找到document,然后return null;