- 浏览: 189180 次
- 性别:
- 来自: QD
文章分类
- 全部博客 (127)
- Struts2 (8)
- Web (27)
- 计算机基础 (2)
- 面试 (2)
- JQuery (4)
- MySQL (1)
- SQL (1)
- AJAX (3)
- Java (17)
- Javascript (36)
- 情感 (0)
- Oracle (7)
- Spring (5)
- FreeMarker (2)
- JSON (1)
- 表达式 (1)
- 线程 (4)
- WebService (10)
- MyEclipse (2)
- LDAP (1)
- Tomcat (1)
- NIO (1)
- Linux (1)
- ExtJS (4)
- Android (1)
- Dojo (2)
- Maven (9)
- Ant (7)
- 分布式 (1)
- Intellij IDEA (1)
最新评论
-
northc:
米饭军 写道如果文件已存在怎样避免应该会覆盖的
用Ant scp往远程linux传文件 -
米饭军:
如果文件已存在怎样避免
用Ant scp往远程linux传文件 -
luis025:
不支持列隐藏 硬伤
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
来自: 司徒正美 blog
http://www.cnblogs.com/rubylouvre/archive/2009/07/24/1529640.html
先看一下各浏览器对document.getElementsByClassName的支持
当然如果游览器原生支持,就用原生的。
N | N | N | Y | N | Y | Y | Y | Y |
(中间省略.......) 综合以上方案,我得出了一个最理想的实现——兼容IE5,让后面两个参数是可选的,能原生的原生,利用字面量与倒序循环提高效率…… 用法: 但它还是不如原生的getElementsByClassName,不能同时检索多个class
//查找一网页中5007个类名为“cell”的元素,IE8历时1828 ~ 1844毫秒,
//IE6为125 ~ 172毫秒,IE8为93 ~ 94毫秒,FF3.5为0~1毫秒,opera10为0毫秒,Chrome为1毫秒,
//safari4为0毫秒
var
getElementsByClassName =
function
(searchClass,node,tag) {
if
(document.getElementsByClassName){
return
document.getElementsByClassName(searchClass)
}
else
{
node = node || document;
tag = tag ||
'*'
;
var
returnElements = []
var
els = (tag ===
"*"
&& node.all)? node.all : node.getElementsByTagName(tag);
var
i = els.length;
searchClass = searchClass.replace(/\-/g,
"\\-"
);
var
pattern =
new
RegExp(
"(^|\\s)"
+searchClass+
"(\\s|$)"
);
while
(--i >= 0){
if
(pattern.test(els[i].className) ) {
returnElements.push(els[i]);
}
}
return
returnElements;
}
}
var
collections = getElementsByClassName(
"red"
);
<
h2
class
=
"red cell title"
>安装支持</
h2
>
<
span
class
=
"cell red "
>jjj</
span
>
<
div
class
=
"filament_table red cell"
>这是DIV</
div
>
#利用 var dd = getElementsByClassName("cell red") ,这三个元素都应该能被检索到!
因此,最最终的方案为:
var
getElementsByClassName =
function
(searchClass, node,tag) {
if
(document.getElementsByClassName){
var
nodes = (node || document).getElementsByClassName(searchClass),result = [];
for
(
var
i=0 ;node = nodes[i++];){
if
(tag !==
"*"
&& node.tagName === tag.toUpperCase()){
result.push(node)
}
else
{
result.push(node)
}
}
return
result
}
else
{
node = node || document;
tag = tag ||
"*"
;
var
classes = searchClass.split(
" "
),
elements = (tag ===
"*"
&& node.all)? node.all : node.getElementsByTagName(tag),
patterns = [],
current,
match;
var
i = classes.length;
while
(--i >= 0){
patterns.push(
new
RegExp(
"(^|\\s)"
+ classes[i] +
"(\\s|$)"
));
}
var
j = elements.length;
while
(--j >= 0){
current = elements[j];
match =
false
;
for
(
var
k=0, kl=patterns.length; k<kl; k++){
match = patterns[k].test(current.className);
if
(!match)
break
;
}
if
(match) result.push(current);
}
return
result;
}
}
发表评论
-
Ext Toolbar换行
2012-06-21 09:02 01.var oneTbar=new Ext.Toolba ... -
禁止select控件選擇
2012-06-20 20:06 0禁止select控件選擇 大家知道, 對於HTML控件 ... -
几种压缩算法原理介绍
2012-05-25 20:04 1293先给出一个JS实现的ZIP:http://stuartk ... -
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
2012-03-12 17:00 10768需要将ExtJS Grid 导出 Excel 的同学可以试一试 ... -
Ext Js 4.x 扩展自己的XType
2012-03-03 14:26 1519如果想用自己定制的XType(比如这里想用一个Obj存 ... -
(转)Javascript中大括号“{}”的多义性
2012-02-25 11:21 973JS中大括号有四种语义作用语义1,组织复合语句,这是最常 ... -
function sleep
2012-02-17 19:16 847//毫秒 (function sleep(t){ ... -
不用递归,循环算0-9999之和(js)
2012-02-17 19:15 858var i=0,sum=eval(new Arra ... -
Augment.js 为旧浏览器增加现代Javascript的功能支持
2012-01-18 12:06 1022index: http://olivernn. ... -
Javascript中的~和~~
2011-12-30 15:58 855<script type="text/j ... -
js中的onchange和onpropertychange
2011-12-28 11:26 1806当一个HTML元素的属 ... -
DOCTYPE! HTML PUBLIC 声明规范
2011-12-26 17:38 1205DOCTYPE的常用声明:按照 HTML 4.01 ... -
parentNode、parentElement,childNodes、children
2011-12-26 17:38 889parentNode、parentElement,childN ... -
关于JS中的constructor与prototype
2011-12-22 19:53 978我们都知道,在JS中有一个function的东西。一般人 ... -
各浏览器对document.getElementById等方法的实现差异
2011-12-21 13:15 885本文来自:http://www.cnblogs.com/sna ... -
全世界最短的IE判定
2011-12-20 15:45 764var ie = !-[1,]; ... -
浏览器支持的JS版本及JS对象图
2011-12-20 10:38 1044来自zh.wikipedia.org的JavaScript ... -
JS判断浏览器能力
2011-12-15 20:47 1006对象/特征检测法 该方法是一种判断浏览器能力(而非浏览器 ... -
onunload和onbeforeunload区别
2011-12-15 18:54 942Onunload,onbeforeunload都是在刷 ... -
收藏的两个多tab切换
2011-12-13 19:02 915留着可能以后有用
相关推荐
原生js方法“document.getElementsByClassName”在ie8及其以下浏览器中,不能使用。 修改:加入兼容性判断,在需要用到该方法的位置修改为getClassNames方法。 代码如下: 原来方法: document....
var oWrap = document.getElementsByClassName('wrap')[0], oBox = document.getElementsByClassName('box'), oBtn1 = document.getElementById("btn1"), oShadow = document.getElementsByClassName("shadow...
getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持搜索。 getElementByClassName()函数的使用方法: 使用JavaScript访问DOM的一个重大问题是,此过程需要一种通过元素类名称来选择类的类函数,对...
有兴趣刚需的可以自己下载,非常实用的特效代码,可以完美运行,有能力的还可以二次修改!
var table=document.getElementsByClassName("el-table__fixed");//table元素所在的div 返回数组 // var table=document.getElementById(tableId); //在指定table绑定id 返回对象 var excelContent = table[0]....
var slideOne = document.getElementsByClassName('shape-1')[0] , slideTwo = document.getElementsByClassName('shape-2')[0] , slideThree = document.getElementsByClassName('shape-3')[0] , options = { ...
先来看一下代码:(支持多个class查询和在某个范围内进行...*/ function getElementsByClassName(fatherId,tagName,className){ node = fatherId&&document.getElementById(fatherId) || document; tagName = tagName |
getElementsByClassName() 为了从一大堆HTML代码中找出我们的树状菜单(也许有多个),我们先来实现一个通过className找DOM节点的方法:getElementsByClassName。这是对浏览器自有DOM方法的一个简单但实用的扩充。 此...
移除 document.queryselector 并替换为 document.getElementsByClassname 和 document.getElementbyID 2. 将比萨元素存储在数组中。 3.优化循环 - 从循环中删除了 document.getElementsByClassName(...
var items = document.getElementsByClassName("title"); for (var j=0; j<items.length; j++) { items[j].onclick = function() { var o = document.getElementById("opt_" + this.name); if (o.style.display...
gogoanime自动播放器厌倦了单击下一个情节? 别说了... 安装此脚本,以在上自动播放您喜欢的动漫。... getElementsByClassName ( 'add_ads' ) [ 0 ] , play_button = document . getElementsByClassName
if (context.getElementsByClassName) return context.getElementsByClassName(sub); tagAll = Vcity._m.$('*', context); n = tagAll.length; for (i = 0; i ; i++) { if (tagAll[i].className.indexOf(sub) >...
document.getElementsByClassName("canvas-container")[0].style.display = "none"; document.getElementById("exportBtn").style.display = "none"; document.getElementById("tip").innerHTML = "长按图片...
document.getElementsByClassName():通过class名字获取一个或多个Dom元素(伪数组) document.getElementsByTagName():通过标签名字获取一个或多个Dom元素(伪数组) document.querySelector():获取指定 CSS ...
var tian = document.getElementsByClassName('JS-tian')[0]; var shi = document.getElementsByClassName('JS-shi')[0]; var fen = document.getElementsByClassName('JS-fen')[0]; var miao = document....
在DOM3里已经加入了...网上部分人直接定义一个getElementsByClassName函数,但是这样的话就需要把代码中所有使用document.getElementsByClassName改写成getElementsByClassName。多少有点不方便,也不通用
本文实例讲述了JS选取...document.getElementsByClassName('myclass')[0]; 3、通过标签选取元素 document.getElementsByTagName('mydiv')[0]; 4、通过NAME属性选取元素(常用于表单) document.getElementsByName
if(document.getElementsByClassName){ return obj.getElementsByClassName(classname) }else{ var alls=obj.getElementsByTagName("*"); for (var i=0; i<alls.length; i++) { if(alls[i].className==...