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

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

var li=document.createElement('li');
li.classList.add('main-nav');
li.classList.includes('main-nav');
@H_301_2@但这会

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

解决方法

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

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

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

[...li.classList].includes('main-nav')
@H_301_2@或者,您可以使用DOMTokenList.contains方法.

li.classList.contains('main-nav')
@H_301_2@为什么它被声明为包含而不是has或contains? (感谢@akinuri)

@H_301_2@引自proposal

@H_301_2@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.

原文链接:https://www.f2er.com/js/155727.html

猜你在找的JavaScript相关文章