window.onload = function () {
var Ul = document.getElementsByTagName('ul')[1];
var oLi =Ul.getElementsByTagName('li');
var oLi2 =Ul.getElementsByTagName('li')[2];
addClass(oLi2,'d');//这个没问题
for(var i = 0; i <= oLi.length; i++){
addClass(oLi[i],'d');
removeClass(oLi[i],'c');
} //这一块代码有问题,不知道原因
function hasClass( elements,cName ){
return !!elements.className.match( new RegExp( "(\\s|^)" + cName + "(\\s|$)") );
};
function addClass( elements,cName ){
if( !hasClass( elements,cName ) ){
elements.className += " " + cName;
};
};
function removeClass( elements,cName ){
if( hasClass( elements,cName ) ){
elements.className = elements.className.replace( new RegExp( "(\\s|^)" + cName + "(\\s|$)" )," " );
};
};
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个很明显啊
循环的判断条件有问题,你一共有
oLi.lenght个元素,从0开始,到oLi.length-1就够了。这样导致
oLi[oLi.length]的值为undefined,后面又读取它的属性,报错不知道为啥,总感觉是正则那块儿的问题= =
适用于 Edge,Chrome,Firefox,Safari
https://developer.mozilla.org...
其实直接用这个方法就好了。。
element.classList.remove(cName)和element.classList.add(cName)