JavaScript:创建元素后不能立即选择它们吗?

JavaScript:创建元素后不能立即选择它们吗?,javascript,hoisting,nodelist,Javascript,Hoisting,Nodelist,我的脚本包含导致我出现问题的以下代码: btn.addEventListener('click', ()=> { if (!gamePlay) { setup() let word=document.querySelectorAll('box') console.log(word) btn.classList.toggle('hidden') gamePlay=true } }) 代码的重置可以在这个JS提琴上看到。顺便说一下,不要介意注释

我的脚本包含导致我出现问题的以下代码:

btn.addEventListener('click', ()=> {
  if (!gamePlay) {
    setup()
    let word=document.querySelectorAll('box')
    console.log(word)
    btn.classList.toggle('hidden')
    gamePlay=true
  }
})
代码的重置可以在这个JS提琴上看到。顺便说一下,不要介意注释掉的代码:

在函数设置中创建了所有div元素之后,我试图通过它们的类名框来选择它们,但是该部分中的节点列表是一个空的节点列表,也显示在控制台中


我假设代码是同步的。我似乎无法访问通过调用setup创建的元素。

您可以在创建文档元素后立即访问和查询它们

这里的问题是选择器语法不正确;要使用box类选择元素,请在选择器前面加上前缀:

btn.addEventListener('click', () => {

  if (!gamePlay) {

    setup();

    let word = document.querySelectorAll('.box'); // Prefix .
    console.log(word);
    btn.classList.toggle('hidden');

    gamePlay = true;
  }
})

您可以在创建文档元素后立即访问和查询它们

这里的问题是选择器语法不正确;要使用box类选择元素,请在选择器前面加上前缀:

btn.addEventListener('click', () => {

  if (!gamePlay) {

    setup();

    let word = document.querySelectorAll('.box'); // Prefix .
    console.log(word);
    btn.classList.toggle('hidden');

    gamePlay = true;
  }
})