getElementByClassName

在JavaScript 内建的核心中,document对象及element对象总共可以通过三个方式来获取其下的元素,分别是:getElementById('id') 、getElementsByName('name') 、getElementsByTagName('tag')  。这些方法就跟它们的名字一样,分别是依照id, name, tag来获取元素。  
    因在同一份文件中,id 是具有唯一性的,所以 getElementById(id) 的回传值是单一物件可以直接使用;而其他则会传回一个依照具有该属性的元素在文件中出现顺序排列的数组,使用时必须指定数组索引,如: array[0] 代表第一个元素。可是在设计网页时,最常常需要使用到的class却没有相对应的方法可以去获取className相同的元素。没有没关系,我们自己写一个,而且代码非常简短只有下面几句。  
function getElementsByClassName(className) {
    var el = new Array();
    var _el = document.getElementsByTagName("*");
    for (var i=0; i<_el.length; i++ ) {
        if (_el[i].className == className) { 
            el[el.length] = _el[i]; 
        } 
    } 
    return el; 
}
    上面这段代码将会传回一个对象数组,这些对象的class名相同。该方法的缺点是只能在页面加载完成后才能获得正确结果,因为如果直接使用document.getElementsByTagName("*")得不到全部标签,只能得到body、head、script、body等几个自动加载或已经加载的标签。解决方法:可以将相关代码放到最后以便body标签加载完成后才执行。下面这段代码是 getElementsByClassName(className) 众多应用的其中一种,可以将文件中所有 className 为oldClassName的元素的className改为newClassName。  
function changeClassName(oldClassName, newClassName) {
    var classTest = getElementsByClassName(oldClassName); 
    for (var i=0; i<classTest.length; i++) {
        classTest[i].className = newClassName; 
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值