javascript - 为什么 .includes() 不能与 .classList 一起使用?

标签 javascript

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.classListDOMTokenList对象,尽管它在控制台中打印类似数组的内容。但是如果你在 Firefox 上尝试,它会返回 DOMTokenList["main-nav"]

并且,includesArray方法而不是 DOMTokenList .

这就是为什么在您的情况下它会遇到 li.classList.includes is not a function 的原因。

您可以使用 ES2015 spread operator将其转换为数组。

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

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

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

为什么声明为includes而不是hascontains? (感谢@akinuri)

引自proposal

The web has classes like DOMStringList and DOMTokenList which are array-like, and have methods named contains with the same semantics as our includes. Unfortunately, meshing with those is not web-compatible.

关于javascript - 为什么 .includes() 不能与 .classList 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37566597/

相关文章:

javascript - Webpack 环境变量是未知参数

javascript - 使用 JavaScript/Node.js 从 IP 地址获取两个字母的大陆代码

javascript - Python函数rpc方法调用晚于js文件中的do_action() Odoo 11

javascript - 图表不显示

javascript - 如何自定义此复选框在页面刷新后保持选中状态

javascript - d3.json() 回调中的代码未执行

javascript - Internet Explorer 中的 CSS3 多列功能

javascript - 如何从youtube抓取单个剪辑的所有评论,超过100页

javascript - 基于 Ajax 的网站上的 OpenGraph

javascript - 前端开发 : where to start?