получить массивы массивов со значениями набора данных из HTML talbe - PullRequest
0 голосов
/ 06 августа 2020

У меня есть 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?

...