const elements = form1.querySelectorAll('[name]:not([name^="skus"]):not([type="hidden"]:not([style*="display:none"])');什么意思
时间: 2024-05-28 10:13:46 浏览: 183
这段代码使用了 CSS 选择器语法,它的意思是在 form1 中查找所有带有 name 属性且不以 "skus" 开头的元素,并且这些元素不是隐藏的(即没有设置 display:none 或者 type="hidden")。
具体解释如下:
- querySelectorAll() 是一个 DOM API,用于在文档中查找匹配某个 CSS 选择器的所有元素,并返回一个 NodeList 对象。
- [name] 表示查找所有带有 name 属性的元素。
- :not([name^="skus"]) 表示排除所有 name 属性以 "skus" 开头的元素,即只查找不以 "skus" 开头的元素。
- :not([type="hidden"]:not([style*="display:none"])) 表示排除所有 type 属性为 "hidden" 或者被设置为 display:none 的元素,即只查找不隐藏的元素。注意,这里使用了 :not() 函数的嵌套形式,表示排除两种不符合条件的元素。
- 最后将查找到的元素存储在 elements 变量中。
相关问题
const elements = form1.querySelectorAll('[name]:not([name^="skus"]):not([type="hidden"]:not([style*="display:none"])');报错grounding.js:447 Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Element': '[name]:not([name^="skus"]):not([type="hidden"]:not([style*="display:none"])' is not a valid selector.
这个错误的原因可能是因为该选择器语法错误。可以尝试将选择器拆分为单独的选择器并逐个调试,找出哪个选择器导致了错误。
例如,您可以将选择器改为以下形式,以便更好地调试:
```
const elements = form1.querySelectorAll('[name]:not([name^="skus"])');
```
如果没有错误,则可以将其他选择器添加回去,逐个调试,直到找出导致错误的选择器。
阅读全文