javascript - 带有动态参数的 querySelectorAll
问题描述
我想使用querySelectorAll()
动态参数。
这是我尝试过的:
const titleEnabled = (document.getElementById('enable-title').checked) ? '.mt-title' : '';
const storenameEnabled = (document.getElementById('enable-storename').checked) ? '.mt-storename' : '';
const dynamicEnabled = (document.getElementById('enable-dynamic').checked) ? '.mt-dynamic' : '';
const query = titleEnabled + comma(titleEnabled) + storenameEnabled + comma(storenameEnabled, dynamicEnabled) + dynamicEnabled;
console.log('Query: ' + query);
if (titleEnabled || storenameEnabled || dynamicEnabled) {
const mtCategories = document.querySelectorAll(query);
}
// Return a comma
const comma = (...arr) => {
for (let a of arr) {
if (a !== '') {
return ', '
}
return '';
}
}
但这是我得到的错误:
未捕获的 DOMException:无法在“文档”上执行“querySelectorAll”:“.mt-storename,”不是有效的选择器。
我的代码有什么问题?
解决方案
这将运作良好。
const titleEnabled = (document.getElementById('enable-title').checked) ? '.mt-title' : '';
const storenameEnabled = (document.getElementById('enable-storename').checked) ? '.mt-storename' : '';
const dynamicEnabled = (document.getElementById('enable-dynamic').checked) ? '.mt-dynamic' : '';
const arr = [];
[titleEnabled, storenameEnabled, dynamicEnabled].forEach((item) => {
if (item) {
arr.push(item);
}
});
const query = arr.join(", ");
console.log("Query: " + query);
document.querySelectorAll(query);
推荐阅读
- apache - Perl cgi 脚本无法读取与其父目录具有相同权限的目录
- webdatarocks - WebDataRocks 枢轴网格的列顺序
- powershell - 如何在 Powershell 中以管理员身份安装程序
- sapui5 - 灵活的列布局箭头无法正常工作
- c# - Xamarin.Forms:如何在 Android 和 ios 上获取和添加滑动事件?
- laravel - 我未能在组件中创建可计算变量
- python - 如何使用 Python 在树莓派上运行 ESC 无刷电机?
- html - index.php 下载而不是加载
- php - 在 PHP 中延迟发送消息(没有“睡眠”功能)
- python - 如何每隔一个附加来自测试加载器的预测数据