首页 > 解决方案 > SyntaxError:无法在“文档”上执行“querySelectorAll”:“#0.resizer”不是有效的选择器

问题描述

我尝试querySelectorAll使用 javascript 在我的网页上执行 a ,但是当我尝试通过使用 div id 作为搜索参数来获取它时,它会收到此错误:

SyntaxError:无法在“文档”上执行“querySelectorAll”:“#0.resizer”不是有效的选择器。

我正在使用 HTML5 和 ReactJS,可能是什么问题?

这是代码行:

alert(document.querySelectorAll("#" + id + ".resizer"));

解决方案?

标签: javascriptjquerycssreactjsdom

解决方案


这里真正的问题是 id 选择器#不能以数字开头。你必须逃避它:

test( '#1.foo' ); // fail
test( '#' + CSS.escape('1') + '.foo' ); // works
test( '#\\31.foo' ); // works


function test( selector ) {
  let pass = false;
  try {
    const elem = document.querySelector( selector );
    pass = elem.textContent === "hi";
  } catch(e) {
    pass = false;
  }
  console.log( selector, pass );
}
<div id="1" class="foo">hi</div>


推荐阅读