根据值长度将CSS类添加到元素

时间:2013-03-27 17:20:16

标签: javascript

我构建了一个菜单,当菜单项变得太长时,我想改变一些CSS。这是我的,但它不起作用:

<script>
    var item1 = document.getElementByClass('nm-item-link-l');
    var item2 = document.getElementByClass('nm-item-link');
    if (item1.length > 20) {
        changeit = document.getElementByClass('nm-item-link-l').addClass('addclass');
    } else {
        ;
    }
    if (item2.length > 20) {
        changeit2 = document.getElementByClass('nm-item-link-l').addClass('addclass');
    } else {
        ;
    }
</script>

4 个答案:

答案 0 :(得分:2)

document.getElementByClass
除非您自己定义,否则

不是有效的js函数。您可能希望getElementByClassNameaddClass相同。 addClass是一个有效的jQuery方法,但不是标准的javascript函数。

根据评论更新

因为看起来你正在使用jQuery

   var list1 = $(".nm-item-link-l");
   var list2 = $(".nm-item-link");

   if (list1.length > 20) {
       list1.addClass("addClass");
   }
   if (list2.length > 20) {
       list2.addClass("addClass");
   }

更新#2,

因为您似乎想要按字长过滤:

   var list1 = $(".nm-item-link-l");
   var list2 = $(".nm-item-link");
   list1.each(filterFunc);
   list2.each(filterFunc);

   function filterFunc(index,value){
     if (parseInt(value).text().length > 20) {
         $(value).addClass("addClass");
     }
   }

答案 1 :(得分:0)

这里存在多个问题

  1. document.getElementByClass应为document.getElementsByClassName
  2. getElementsByClassName返回一个dom对象数组
  3. dom对象中没有名为addClass的方法,您需要使用属性className来更新元素的class属性。
  4. 代码

    var items = document.getElementsByClassName('nm-item-link-l');
    for(var i = 0; i < items.length; i++){
        items[i].className = 'addclass';
    }
    

    如果你有jquery

    var item1 = $('.nm-item-link-l');
    if(item1.length > 20){
        item1.addClass('addclass')
    }
    

答案 2 :(得分:0)

document.getElementsByClassName不是document.getElementByClass。

答案 3 :(得分:0)

function minimumClass(nodes, className, minNodes) {
  for (var i = 0, n = nodes.length; n > minNodes && i < n; i++) {
    nodes[i].classList.add(className);
  }
}

minimumClass(document.getElementsByClassName('nm-item-link-1'), 'add-class', 20);
minimumClass(document.getElementsByClassName('nm-item-link'), 'add-class', 20);