javascript – 为什么.includes()不能使用.classList?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么.includes()不能使用.classList?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
element.classList返回一个类数组,我的理解.includes()与数组一起使用,所以我不明白为什么这不起作用,我知道我可以使用.contains()和classList,但我很好奇为什么.includes()不起作用.

两者都是数组,如果我输入这个例如它不会工作

var li=document.createElement('li');
li.classList.add('main-nav');
li.classList.includes('main-nav');

但这会

var ary=['a','b','c'];
ary.includes('a');

解决方法

Element.classList是一个 DOMTokenList对象,虽然它在控制台中打印出类似数组的对象.但是如果你尝试使用Firefox,它会返回DOMTokenList [“main-nav”]

并且,includesArray而不是DOMTokenList方法.

这就是为什么它会遇到li.classList.includes在你的情况下不是一个函数.

您可以使用ES2015 spread operator将其强制转换为数组.

[...li.classList].includes('main-nav')

或者,您可以使用DOMTokenList.contains方法.

li.classList.contains('main-nav')

为什么它被声明为包含而不是has或contains? (感谢@akinuri)

引自proposal

The web has classes like 07008 and 07001 which are array-like,and have methods named 070010 with the same semantics as our 07002. Unfortunately,meshing with those is not web-compatible.

猜你在找的JavaScript相关文章