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|$)" )," " ); }; }; }
数据分析师2017-10-01 00:32:21
순서가 지정되지 않은 목록에 특정 클래스가 포함되어 있는지 확인하고 클래스를 추가 및 삭제할 때 문제가 발생함-PHP 중국어 Q&A-순서가 지정되지 않은 목록에 특정 클래스가 포함되어 있는지 확인하고 클래스를 추가 및 삭제할 때 문제가 발생함-PHP 중국어 온라인 Q&A
보기 그것을 배우고 배우십시오.
巴扎黑2017-02-25 09:40:49
这个很明显啊
for(var i = 0; i <= oLi.length-1; i++){//注意:length-1 而不是 length addClass(oLi[i],'d'); removeClass(oLi[i],'c'); }
循环的判断条件有问题,你一共有oLi.lenght个元素,从0开始,到oLi.length-1就够了。
这样导致oLi[oLi.length]的值为undefined,后面又读取它的属性,报错