未能在“文档”上执行“querySelectorAll”:在javascript中?

未能在“文档”上执行“querySelectorAll”:在javascript中?,javascript,jquery,Javascript,Jquery,我试图在javascript中转换以下行,但出现以下错误 错误: 未能对“文档”:“执行'querySelectorAll'。通常是li[aria selected!='true'] Jquery代码 javascript 您可以将命令拆分为2-3行,以便轻松调试 const element=document.queryselectoral.usuggest li[aria selected!='true'] //您可以在此处检查元素的值0f:console.logelement 元素[0]。s

我试图在javascript中转换以下行,但出现以下错误

错误: 未能对“文档”:“执行'querySelectorAll'。通常是li[aria selected!='true'] Jquery代码

javascript


您可以将命令拆分为2-3行,以便轻松调试

const element=document.queryselectoral.usuggest li[aria selected!='true']

//您可以在此处检查元素的值0f:console.logelement

元素[0]。setAttribute'aria-selected','true'

如果这也会导致错误,请使用console.logelement的输出进行回复

处的引用提到您传递的选择器必须是有效的CSS选择器。事实上,如果查看代码生成的完整错误,它会给出以下信息:

Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': '.usuggest li[aria-selected!='true']' is not a valid selector.
告诉我们选择器有问题

移动到的CSS选择器和属性选择器,我们看到要选择属性,!=不是有效的运算符。从中我们可以看出,我们需要在前面加上:不应用逆运算,然后进行等式检查

这为我们提供了以下更新的JavaScript

document.queryselectoral.usuggest li:不是[aria selected='true'] 它应该做你想做的

这将生成整个查询:

document.queryselectoral.usuggest li:不是[aria selected='true'][0]。setAttribute'aria-selected','true'; 由于querySelectorAll可能不会返回结果,我建议执行以下操作:

Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': '.usuggest li[aria-selected!='true']' is not a valid selector.
const falseListItems=document.querySelectorAll.usuggest li:not[aria selected='true']; 如果falseListItems.length>0{ falseListItems[0]。setAttribute'aria-selected','true'; }
如果您可以保证查询将导致单个结果,那么当然不需要额外的If语句。

阅读完整的错误消息,最重要的是,在将其发布到此处之前,您将发现问题:'.usuggest li[aria selected!='true']'不是有效的选择器,@mplungjan选择器在与jQuery一起使用时不是无效的,如dupe目标或此处所述:@Andreas Wow。我不知道也不会使用它:我想将jquery行转换为javascript@user944513然后做一些研究,阅读答案或dupe目标。@user944513我相信答案以前做过,并解释了您的问题,但是我已经更新了它,使其更清楚
Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': '.usuggest li[aria-selected!='true']' is not a valid selector.