Запретить фильтру массива сопоставлять элементы, которые не имеют тот же индекс, что и требуемый элемент - PullRequest
0 голосов
/ 22 ноября 2018

Я создал счетчик очков, который выделяет победителя в каждой игре, добавив класс .winner с помощью следующего JavaScript:

  // take max score from each game and push into g1winner and g2winner arrays - 
  g1winner.push(Math.max(parseInt(scoreboxArr[i].split(';')[2]),parseInt(scoreboxArr[i].split(';')[5]))); 
  g2winner.push(Math.max(parseInt(scoreboxArr[i].split(';')[11]),parseInt(scoreboxArr[i].split(';')[14])));

  // filter scorebox-elem's for each date to find max score and addClass '.winner'
  $('#g1t1_score.scorebox-elem, #g1t2_score.scorebox-elem').filter(function () {
    return $(this).is(':contains('+g1winner[i]+')');
  }).addClass('winner').prevAll().eq(2).addClass('winner');

  $('#g2t1_score.scorebox-elem, #g2t2_score.scorebox-elem').filter(function () {
    return $(this).is(':contains('+g2winner[i]+')');
  }).addClass('winner').prevAll().eq(2).addClass('winner'); 

Счетчик очков позволяет пользователям перемещаться влево и вправо для просмотра игрыоценка по дате.Выделение команд-победителей (с помощью метода addClass) работало великолепно, пока у меня не было команды-проигравшего с тем же счетом, что и у предыдущей команды-победителя с другой даты.Наблюдайте:

enter image description here

enter image description here

Вы можете увидеть это в действии здесь: https://cbnmensbasketball.weebly.com/.

Я понимаю, почему это происходит, но я программист-любитель, и я не уверен, как я могу изменить то, что у меня есть, так что функция filter соответствует только командам-победителям текущей игры.Может быть, добавить счетчик, который привязан к каждому scorebox-grid (белые div s выше) и добавить в условие, что индекс элемента в каждом массиве должен соответствовать счетчику?Предложения?

1 Ответ

0 голосов
/ 22 ноября 2018

На самом деле, если вы посмотрите на .filter() jQuery docs , вы можете увидеть, что его функция callback имеет два параметра, первый из них - index обработанной element:

функция

Тип: Function (Целое число index, Элемент element) => Boolean

Функция, используемая в качестве теста для каждого элемента в наборе.это текущий элемент DOM.

Итак, что нужно сделать, это передать это index в функцию обратного вызова и сравнить ее с вашей переменной i, чтобы она заняла только соответствующую element в счет:

$('#g2t1_score.scorebox-elem, #g2t2_score.scorebox-elem').filter(function (index) {
    return index == i && $(this).is(':contains('+g2winner[i]+')');
  }).addClass('winner').prevAll().eq(2).addClass('winner');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...