这就是getElementsByClassName
:
document.getElementsByClassName('hello');
这将选择任何具有 class 的元素hello
。
注意:该class
属性包含一个空格分隔的类名列表。
如果您需要支持 IE8 及以下版本,请使用以下命令:
var elements = document.getElementsByTagName("td"),
helloElements = [],
i = elements.length;
for (i--) {
if ( ~(' ' + elements[i].className + ' ').indexOf(' hello ') ) {
helloElements.push(elements[i]);
}
}
这是一个演示:http: //jsfiddle.net/AJEsp/
根据@mplungjan 的建议,这里是按位波浪号 (~) 技巧的简短说明:
该indexOf
函数返回一个整数,其中包含找到的子字符串的位置,因此'abc'.indexOf('b')
将 return 1
,'abc'.indexOf('c')
将 return 2
,依此类推。如果未找到子字符串,它将返回-1
.
该~
字符是位运算符之一,它会反转所有位。回避这究竟是如何发生的复杂问题,我们现在只需要知道return ,而在其他任何东西上使用波浪号都会~-1
返回一个真实值。0
因此,~'str'.indexOf('substring')
可以将其视为是否找到子字符串的布尔值。