2016-10-03 4 views
1

Я учусь Javascript, в присвоении школе мы должны с помощью цикла сосчитать, сколько игр было сделано в 2014 г.Перебор элементов в HTML-таблице

Она не возвращает ничего в консоли, где есть Я ошибся?

var allGames = document.getElementsByTagName('td'); 
 
var array = Array.prototype.slice.call(allGames, 0) 
 
var games14 = 0; 
 
for (var i = 0; i < array.length; ++i) { 
 
    if (array[i] == 2014) { 
 
    games14++; 
 
    console.log(games14) 
 
    } 
 
}
<table id="games"> 
 
    <thead> 
 
    <tr> 
 
     <th>Titel</th> 
 
     <th>Genre</th> 
 
     <th>Årstal</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody id="games_tbody"> 
 
    <tr class="horror"> 
 
     <td class="title">Outlast</td> 
 
     <td>Horror</td> 
 
     <td>2013</td> 
 
    </tr> 
 
    <tr class="rpg"> 
 
     <td class="title">Dragon Age: Inquisition</td> 
 
     <td>Role-playing Game</td> 
 
     <td>2014</td> 
 
    </tr> 
 
    <tr class="rpg"> 
 
     <td class="title">Skyrim</td> 
 
     <td>Role-playing Game</td> 
 
     <td>2011</td> 
 
    </tr> 
 
    <tr class="horror"> 
 
     <td class="title">Amnesia: The Dark Descent</td> 
 
     <td>Horror</td> 
 
     <td>2010</td> 
 
    </tr> 
 
    <tr class="simulator"> 
 
     <td class="title">Scania Truck Driving Simulator</td> 
 
     <td>Simulator</td> 
 
     <td>2012</td> 
 
    </tr> 
 
    <tr class="horror"> 
 
     <td class="title">Five Nights at Freddy’s</td> 
 
     <td>Horror</td> 
 
     <td>2014</td> 
 
    </tr> 
 
    <tr class="simulator"> 
 
     <td class="title">Sims 4</td> 
 
     <td>Simulator</td> 
 
     <td>2014</td> 
 
    </tr> 
 
    <tr class="rts" id="last"> 
 
     <td class="title">Warcraft III: Reign of Chaos</td> 
 
     <td>Real-time Strategy</td> 
 
     <td>2002</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

Вам нужно пройти через каждую строку и столбец. Возможный ref: http://stackoverflow.com/questions/3065342/how-do-i-iterate-through-table-rows-and-cells-in-javascript – Sri

+0

'if (array [i] .textContent == '2014 ') {' – Rayon

ответ

5

Вы должны проверить его текст:

var allGames = document.getElementsByTagName('td'); 
... 
if (array[i].innerHTML == '2014') { 

ИЛИ

if(array[i].innerText == '2014' || array[i].textContent == '2014'){ 
+0

Спасибо, это помогло! –

+0

Рад помочь вам;) –

+0

'getElementsByTagName ('td'). InnerHTML'? Я _doubt_ .. – Rayon

1
array[i] == 2014 

Все в массиве будет элементом элемента элемента данных таблицы HTML.

Ничто в массиве не будет номер 2014.

Вы должны прочитать текстовое содержимое из элемента, а затем сравните это.

3

Нет необходимости делать петлю через элементы в HTML-таблице .. Вы можете просто использовать regular expressions для подсчета всех вхождений в games_tbody:

var games14 = document 
 
    .getElementById('games_tbody') 
 
    .innerText 
 
    .match(/2014/g) 
 
    .length; 
 

 
console.log('Games made in 2014:', games14);
<table id="games"> 
 
    <thead> 
 
    <tr><th>Titel</th><th>Genre</th><th>Årstal</th></tr> 
 
    </thead> 
 
    <tbody id="games_tbody"> 
 
    <tr class="horror"><td class="title">Outlast</td><td>Horror</td><td>2013</td></tr> 
 
    <tr class="rpg"><td class="title">Dragon Age: Inquisition</td><td>Role-playing Game</td><td>2014</td></tr> 
 
    <tr class="rpg"><td class="title">Skyrim</td><td>Role-playing Game</td><td>2011</td></tr> 
 
    <tr class="horror"><td class="title">Amnesia: The Dark Descent</td><td>Horror</td><td>2010</td></tr> 
 
    <tr class="simulator"><td class="title">Scania Truck Driving Simulator</td><td>Simulator</td><td>2012</td></tr> 
 
    <tr class="horror"><td class="title">Five Nights at Freddy’s</td><td>Horror</td><td>2014</td></tr> 
 
    <tr class="simulator"><td class="title">Sims 4</td><td>Simulator</td><td>2014</td></tr> 
 
    <tr class="rts" id="last"><td class="title">Warcraft III: Reign of Chaos</td><td>Real-time Strategy</td><td>2002</td></tr> 
 
    </tbody> 
 
</table>

0

Я думаю, что это лучший способ ,

var table = document.getElementById("games"); 
count = 0; 
for (let i = 0; row = table.rows[i]; i++) { 
    if (row.cells[2].innerHTML === "2014"){ 
     count++; 
    } 
/* 
    for (let j = 0; col = row.cells[j]; j++) { 
     if (col.innerHTML === "2014"){ 
      count++; 
     } 
    } 
*/ 
} 
console.log(count); 

Прокомментированный код предназначен для проверки каждого элемента в одной строке.