2017-10-12 15 views
1

JSでquerySelectorを使用して、JSスクリプトで埋め込んだhtmlマークアップを選択します。しかし、const questionCard.cardというクラスのdivを格納しようとすると、いつでもnullとなります。document.querySelectorはnullを返します

カードを選択できないのはなぜですか?

HTML:

<div class='card-container'></div> 

JS:

const questionBlock = document.querySelector('.card-container'); 
const questionCard = document.querySelector('.card'); 

function build() { 
    let output = []; 

    ...some unimportant code here... 

     output.push(
     ` 
      <div class='card'> 
      <div class='question'>${current.question}</div> 
      <div class='answers'>${answers.join('')}</div> 
      </div> 
     ` 
    ); 
    }) 

    questionBlock.innerHTML = output; 
} 

build(); 
+0

含むクラスで最初の要素となります'build()'を実行する前にクラス 'card'を持つ要素 –

+0

JSで作成されます。 – GjoreDz

+0

編集したコメントを見る - 'questionCard'は"動的 "ではない - コードが実行されたときに値が設定される –

答えて

3

あなたはbuild()を呼び出し後document.querySelector('.card')を呼び出す必要があります。まだ存在しないHTML要素を見つけることはできません。

const questionBlock = document.querySelector('.card-container'); 

function build() { 
    let output = []; 

    ...some unimportant code here... 

     output.push(
     ` 
      <div class='card'> 
      <div class='question'>${current.question}</div> 
      <div class='answers'>${answers.join('')}</div> 
      </div> 
     ` 
    ); 
    }) 

    questionBlock.innerHTML = output; 
} 

build(); 

const questionCard = document.querySelector('.card'); 
0

より正解に代わるものは次のとおりです。今

const questionCard = document.getElementsByClassName('card'); 

questionCardライブHTMLCollectionあり、そしてquestionCard[0]は、あなたのHTMLがありませんcard

関連する問題