Здесь есть несколько вопросов.Во-первых, ваш HTML не работает.Элементы td
должны быть правильно закрыты с помощью </td>
.Тогда <tr />
должно быть </tr>
.
Во-вторых, ваш синтаксис цикла for
неверен.numbers
является ссылкой на массив, поэтому использование его в качестве итератора вызовет странное поведение.Вместо этого вам нужно определить целое число и увеличить его.Затем вы можете использовать это целое число для извлечения значений из numbers
по индексу в цикле for
.
Наконец, find()
ожидает, что селектор будет искать дочерние элементы в пределах td
.Вместо этого вам нужно использовать filter()
, чтобы соответствовать текст каждой ячейки.Функция фильтра должна взять текст ячейки и использовать indexOf()
, чтобы определить, находится ли это значение в содержимом массива.Также обратите внимание, что при использовании этого метода вам больше не нужен цикл for
.Попробуйте это:
var numbers = [1, 2, 3, 7, 8, 9, 10, 16, 17, 18, 19, 20];
$('td').filter(function() {
return numbers.indexOf(parseInt($(this).text(), 10)) != -1;
}).addClass('active');
td.active {
color: #f00;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
<td>17</td>
<td>18</td>
<td>19</td>
<td>20</td>
</tr>
</table>