2017-05-11 5 views
0

クラスmoveを持つスパンの内部にテキストを入れたいと思います。だから、ボタンをクリックすると、クラス移動の内部のテキストが引数の1つとして関数moveに渡されます。 p.s. HTMLコードが与えられていて、何も変更できません。私のjsコードに何か問題がありますか?エラーメッセージ "Uncaught TypeError:未定義のプロパティ 'innerHTML'を読み取れません。クラスを含むスパンの内部のテキストを取得する方法。 (forループの内側)

HTMLコードの一部です。

<div id="my-card"> 


    <div class="card-container"> 
     <div class="card"> 
     <div class="moves"> 
      <button> 
      <span class="move">a</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
      <button> 
      <span class="move">b</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
      <button> 
      <span class="move">c</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
      <button> 
      <span class="move">d</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
     </div> 
     <img src="icons/fighting.jpg" alt="weakness" class="weakness" /> 
     </div> 
    </div> 
    </div> 

Javascriptを:

for(var i=0; i<4; i++){ 
       document.querySelectorAll("#my-card .moves button")[i].onclick = function(){ move(document.querySelectorAll("#my-card .moves .move")[i].innerHTML, gameID, playerID) }; 
    } 
+0

ます( '')コメントありがとうございました –

答えて

2

この

for(var i=0; i<4; i++){ 
    document.querySelectorAll("#my-card .moves button")[i].onclick = 
     function(){ move(this.querySelectorAll(".move")[0].innerHTML, gameID, playerID) }; 
} 

を試してみてください私はthis.querySelectorAllにごdocument.querySelectorAllを切り替えます。

以下は、結果をコンソールに示すスニペットです。

for (var i = 0; i < 4; i++) { 
 
    document.querySelectorAll("#my-card .moves button")[i].onclick = function() { 
 

 
    console.log(this.querySelectorAll(".move")[0].innerHTML) 
 

 
    } 
 
}
<div id="my-card"> 
 

 

 
    <div class="card-container"> 
 
    <div class="card"> 
 
     <div class="moves"> 
 
     <button> 
 
      <span class="move">a</span> <span class="dp"></span> 
 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
 
     </button> 
 
     <button> 
 
      <span class="move">b</span> <span class="dp"></span> 
 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
 
     </button> 
 
     <button> 
 
      <span class="move">c</span> <span class="dp"></span> 
 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
 
     </button> 
 
     <button> 
 
      <span class="move">d</span> <span class="dp"></span> 
 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
 
     </button> 
 
     </div> 
 
     <img src="icons/fighting.jpg" alt="weakness" class="weakness" /> 
 
    </div> 
 
    </div> 
 
</div>

+0

あなた '' sの一部を閉鎖するために忘れてしまいました!私は試しましたが、同じエラーが残りました... – Tak

+0

あなたのコードはうまくいきましたが、なぜthis.querySelectorAll( "move")[0] .innerHTML 'のインデックスとして0を使用しなければならないのか不思議です。なぜ私は使ってないの? – Tak

+0

** i **はボタン上にあるので、クリックイベントを設定します。 **この**は、ボタンをクリックすると呼び出されます。その時点でセレクタが検索されますが、これは少数かもしれませんので、最初のセレクタを選択しています。 – luly

関連する問題