我构建了一个菜单,当菜单项变得太长时,我想改变一些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>
答案 0 :(得分:2)
document.getElementByClass
除非您自己定义,否则不是有效的js函数。您可能希望getElementByClassName
与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");
}
因为您似乎想要按字长过滤:
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)
这里存在多个问题
document.getElementByClass
应为document.getElementsByClassName
getElementsByClassName
返回一个dom对象数组addClass
的方法,您需要使用属性className
来更新元素的class
属性。代码
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);