0

メニューを作成しましたが、メニュー項目が長くなりすぎたときに 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

4 に答える 4

2
document.getElementByClass

自分で定義しない限り、有効な js 関数ではありません。あなたはおそらくgetElementByClassName Same for を望んでいaddClassます。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");
     }
   }
于 2013-03-27T17:24:18.267 に答える
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);
于 2013-03-27T17:32:03.887 に答える
0

これは、document.getElementByClass ではなく、document.getElementsByClassName です。

于 2013-03-27T17:27:18.823 に答える
0

ここには複数の問題があります

  1. document.getElementByClassする必要がありますdocument.getElementsByClassName
  2. getElementsByClassNamedom オブジェクトの配列を返します
  3. dom オブジェクトで呼び出されるメソッドはありません。プロパティを使用して要素の属性を更新するaddClass必要があります。classNameclass

コード

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')
}
于 2013-03-27T17:24:46.250 に答える