判断无序列表里是否包含某个类,并添加和删除类时遇到问题

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|$)" )," " );   

        };  

    };  


千万里不及你
浏览 421回答 1
1回答

HUH函数

这个很明显啊for(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<=&nbsp;oLi.length-1;&nbsp;i++){//注意:length-1&nbsp;&nbsp;&nbsp;而不是&nbsp;length &nbsp;&nbsp;&nbsp;&nbsp;addClass(oLi[i],'d'); &nbsp;&nbsp;&nbsp;&nbsp;removeClass(oLi[i],'c');}循环的判断条件有问题,你一共有oLi.lenght个元素,从0开始,到oLi.length-1就够了。这样导致oLi[oLi.length]的值为undefined,后面又读取它的属性,报错
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript