querySelector()仅返回单个匹配priceList_前缀类的元素而非全部如何解决
解决方案
你原代码的问题在于document.querySelector本身仅返回匹配选择器的第一个元素,若要获取所有匹配结果,需要使用document.querySelectorAll。
根据你的需求,有两种常见场景的实现:
场景1:提取页面所有以priceList_开头的类名存入数组
const prefix = 'priceList_'; // 获取所有类属性包含该前缀的元素 const matchedElements = document.querySelectorAll(`[class*="${prefix}"]`); const resultSet = new Set(); matchedElements.forEach(el => { // 遍历单个元素的所有类名,筛选符合前缀的项 el.classList.forEach(className => { if (className.startsWith(prefix)) { resultSet.add(className); } }) }) // 转为数组,已自动去重,可直接后续使用 const targetClassArr = Array.from(resultSet);
注:选择器使用[class*="priceList_"]而非[class^="priceList_"]是为了避免类前缀不在class属性首位时被漏匹配,后续通过startsWith精确校验类名本身不会出现误判。如果不需要去重,直接用数组push替代Set操作即可。
场景2:获取所有带有priceList_开头类的元素存入数组
// 直接将querySelectorAll返回的类数组转为普通数组即可 const targetElementArr = Array.from(document.querySelectorAll('[class*="priceList_"]'));
内容的提问来源于stack exchange,提问作者JasHam
相关产品推荐
相关产品推荐

