这里介绍了一个新的获取元素的方法:getElementsByClassName;
通过类名来获取元素,不仅可以是一个类名,也可以是多个类名,
也就是说这样写也可以:document.getElementsByClassName("sale important") // sale和important都是类名
还有就是,顺序在这里也不是那么重要,写成这样也是可以的:document.getElementsByClassName("important sale") // 这种便捷往往会带来隐患
需要注意的是,这个方法是在HTML5 DOM中新增的,所以使用时,需要注意浏览器的支持和兼容性问题;
考虑到兼容性问题,作者给出了一个解决方案:
function getElementsByClassName(node, classname){
if(node.getElementsByClassName){
// 使用现有方法
return node.getElementsByClassName(classname);
}else {
var results = new Array();
var elems = node.getElementsByTagName("*");
for (var i=0; i<elems.length; i++){
if(elems[i].className.indexof(classname) != -1){
results[results.length] = elems[i];
}
}
return results;
}
}
关于indexof
indexOf()定义和用法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
fromindex |
可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。 如省略该参数,则将从字符串的首字符开始检索。 |
说明
该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
提示和注释
注释:indexOf() 方法对大小写敏感!
注释:如果要检索的字符串值没有出现,则该方法返回 -1。
实例
在本例中,我们将在 "Hello world!" 字符串内进行不同的检索:
<script type="text/javascript">
var str="Hello world!";
document.write(str.indexOf("Hello") + "<br />");
document.write(str.indexOf("World") + "<br />");
document.write(str.indexOf("world"));
</script>
以上代码的输出:
0 -1 6