У меня есть HTML talbe с такими строками, как эта
<tr class="workRow" id="prep-fin">
<th class="workName">Preparacion/Finalizacion</th>
<td class="norm" data-state="pas">0.5</td>
<td class="xCell" data-data-hour = "08:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "08:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "09:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "09:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "10:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "10:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "11:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "11:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "12:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "12:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "13:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "13:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "14:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "14:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "15:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "15:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "16:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "16:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "17:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "17:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "18:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "18:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "19:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "19:30" data-state="pas"></td>
<td class="xCell" data-data-hour = "20:00" data-state="pas"></td>
<td class="xCell" data-data-hour = "20:30" data-state="pas"></td>
<th class="total">0</th>
<th class="dif"></th>
</tr>
, и у меня есть 10 строк, в которых внутренний HTML изменен на стороне пользователя. что мне нужно, так это получить строку за строкой значения часов данных для тех ячеек, у которых есть 'x' как внутренний HTML. и вернуть массив массивов (строк). Если мне это нравится для одной строки с ID
var timeCodesInputs = document.getElementById('prep-fin').getElementsByClassName('xCell')
var timeCodesRaw = [].map.call(timeCodesInputs, function( input ) {
if(input.innerHTML == "x"){
return input.dataset.dataHour;
}
}
)
var timeCodesFiltered = timeCodesRaw.filter(Boolean);
, все работает нормально. Но я хотел бы иметь более эффективный способ, чем просто дублирование этого кода для 10 идентификаторов (строк).
Я пробовал это
var rows = document.getElementsByClassName('workRow')
for (var i=0;i<rows.length;i++){
var timeCodesInputs = rows[i].getElementsByClassName('xCell')
var timeCodesRaw = [].map.call(timeCodesInputs, function( input ) {
if(input.innerHTML == "x"){
return input.dataset.dataHour;
}
}
)
var timeCodesFiltered = timeCodesRaw.filter(Boolean);
}
, но он возвращает undefined. Как здесь правильно l oop?