javascript 查询选择器()包含整数--- DOMException:未能对“文档”执行“querySelector..."不是有效的选择器[重复]

5kgi1eie  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(266)
    • 此问题在此处已有答案**:

Uncaught SyntaxError: Failed to execute 'querySelector' on 'Document'(2个答案)
3小时前关门了。
当传入一个恰好是整数的变量时,我遇到了一些关于如何使用document.querySelector()的冲突信息。
在我的代码中,我试图检查页面上是否存在某个特定的HTML元素。我是通过使用document.querySelector并传入该元素的ID(碰巧是一个数字)来完成这一操作的。因为我选择的是ID,所以我也传入了"#",因此使用了模板文本,因为ID存储在变量中。
例如:消息ID = 63c347f214f8baf0457355d3
//this works
常量消息存在=文档.获取元素按标识(消息标识);
//this doesn't
const msgExists =文档查询选择器('#${msg._id}');
并生成以下错误消息:
55index.js:23获取消息时出错DOMException:无法对"文档"执行"querySelector":"#63c347f214f8baf0457355d3"不是有效的选择器。地址为http://localhost:3434/js/index.js:35:34地址为数组. forEach()地址为postMessages(地址为http://localhost:3434/js/index.js:29:10)地址为http://localhost:3434/js/index.js:20:9地址为异步提取Messages(地址为http://localhost:3434/js/index.js:16:5)
我也尝试过使用字符串连接代替模板文字。
/this also does not work
常量消息存在=文档.查询选择器('#'+消息标识);'
并产生与上述相同的误差。
我已经找到了使用document. getElementById的解决方案,但是我想知道为什么document. querySelector在我试图传入一个数字变量时不起作用?我认为这与转义字符有关,但我不确定需要转义什么。

gopyfrb3

gopyfrb31#

您可以使用属性选择器来解决此问题

// error
// const msgExists = document.querySelector('#63c347f214f8baf0457355d3')

// no error
const msgExists = document.querySelector("[id='63c347f214f8baf0457355d3']")

console.log(msgExists)
<p id="63c347f214f8baf0457355d3">test<p/>

相关问题