为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2018-10-19 14:10:40
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|$)" )," " );           };      };  } 
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

这个很明显啊

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,后面又读取它的属性,报错


查看完整回答
反对 回复 2018-11-21
  • 1 回答
  • 0 关注
  • 420 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信