querySelector() 只给出一个 class 而不是多个
querySelector() only giving one class instead of multiple
在我的代码中,我试图将所有以 priceList_ 开头的 classes 放入一个数组中供以后使用。我曾经这样做的代码是:var prefix = document.querySelector('[class^="priceList_"]').className;
这段代码有一个问题,它只给出第一个带有该前缀的 class 而不是给出 classes 的数组。有谁知道这个问题的解决方案吗?
使用querySelectorAll()
,得到NodeList
。它是可迭代的。
考虑使用 Element.classList
而不是 className
。您也可以调用 classList.entries()
来获取迭代器。
您还可以使用 Element.className.split(" ")
从 className
获取数组
您需要使用document.querySelectorAll
,document.querySelector
目的是找到页面上第一个符合条件的元素。
补充一下
document.querySelectorAll('[class^="priceList_"]').className
会出错,因为返回的对象是节点的 NodeList,而不是单个节点(您可以从中获取类)。
如果您想获得每个元素类的结构化数组,请执行以下操作
const classes = [...document.querySelectorAll('[class^="priceList_"]')].map(elem => elem.className);
这将分配一个类数组(按照页面上 DOM 元素的顺序)。你也可以
const classes = [];
for (const elem of document.querySelectorAll('[class^="priceList_"]')) {
classes.push(elem.className);
}
console.log('CLASSES', classes);
querySelector()
returns第一个结果,如果要多个结果使用querySelectorAll()
.
在我的代码中,我试图将所有以 priceList_ 开头的 classes 放入一个数组中供以后使用。我曾经这样做的代码是:var prefix = document.querySelector('[class^="priceList_"]').className;
这段代码有一个问题,它只给出第一个带有该前缀的 class 而不是给出 classes 的数组。有谁知道这个问题的解决方案吗?
使用querySelectorAll()
,得到NodeList
。它是可迭代的。
考虑使用 Element.classList
而不是 className
。您也可以调用 classList.entries()
来获取迭代器。
您还可以使用 Element.className.split(" ")
className
获取数组
您需要使用document.querySelectorAll
,document.querySelector
目的是找到页面上第一个符合条件的元素。
补充一下
document.querySelectorAll('[class^="priceList_"]').className
会出错,因为返回的对象是节点的 NodeList,而不是单个节点(您可以从中获取类)。
如果您想获得每个元素类的结构化数组,请执行以下操作
const classes = [...document.querySelectorAll('[class^="priceList_"]')].map(elem => elem.className);
这将分配一个类数组(按照页面上 DOM 元素的顺序)。你也可以
const classes = [];
for (const elem of document.querySelectorAll('[class^="priceList_"]')) {
classes.push(elem.className);
}
console.log('CLASSES', classes);
querySelector()
returns第一个结果,如果要多个结果使用querySelectorAll()
.