【发布时间】:2010-01-15 21:21:55
【问题描述】:
我正在尝试获取一些类名为“特殊”的元素。 我在网上找到了以下脚本,但它只返回一个空数组。
有谁知道出了什么问题?
getElementsByClassName = function (node, classname){
var a = [],
re = new RegExp('\b' + classname + '\b'),
els = node.getElementsByTagName("*"),
l = els.length,
i;
for (i = 0; i < l; i += 1) {
if (re.test(els[i].className)) {
a.push(els[i]);
}
}
console.log(a)
return a;
}
var wrap = document.getElementById('wrap');
getElementsByClassName(wrap, 'special')
wrap 包含 22 个子节点,最后一个是 <p class="special">Lorem</p>,在 firebug 中我一直找到具有类名的节点,但随后它会跳过 a.push。我迷路了!
编辑: 好的,现在它确实可以工作了,但知道为什么 console.log(a) 返回一个空数组仍然很有趣
【问题讨论】:
-
我想要做的是: if(wrap.getElementsByClassName('ar').length){ do.. } 如果 FF 可以正常工作,但不能在 ie 中工作,因为它不支持 getElementsByClassName
-
“ar a = new Array();”行...不应该是“var a = new Array();”吗?或者更好的是,“var a = [];”
-
哦,'ar' 溜进来了,我认为 new Array 比 [] 好,我都试过了,没什么区别 =/
标签: javascript regex