2017-05-11 75 views
0

我想要得到一個文本,其中有一個類move。所以我試圖做到這一點,當你點擊按鈕時,其類文本內部的文本將作爲參數之一傳遞給函數move。附: 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) }; 
} 

我換你document.querySelectorAllthis.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

感謝您發表評論!我試過了,但同樣的錯誤仍然存​​在... – Tak

+0

對不起,你的代碼工作,但我想知道爲什麼我必須使用0作爲'this.querySelectorAll(「。move」)[0] .innerHTML'的索引。你爲什麼不用我? – Tak

+0

由於** i **在按鈕上,因此設置了單擊事件。 **這個**一旦點擊按鈕就會被調用。在這一點上,它會查詢您的選擇器,這可能是幾個,所以我們選擇第一個。 – luly