jQuery indexOf не работает должным образом

0

Я столкнулся с этой проблемой и не могу понять, что делать.

У меня есть таблица:

<table class="jtable">
<tbody>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>2</td>
        <td>agea</td>
        <td>haeh</td>
    </tr>
    <tr>
        <td>3</td>
        <td>2</td>
        <td>1</td>
    </tr>
</tbody>
</table>

И мне нужно проверить первый столбец, вот что я делаю:

$(document).ready(function(){
    var arr = new Array(2, 1);
    $('.jtable').find("tbody tr").each(function(){
        var firstCol = $(this).find("td:first").text();
        var inArray = arr.indexOf(firstCol);
        alert(firstCol+" "+inArray);
        if(inArray == -1){
            $(this).css("background", "red");
        } else {
            $(this).css("background", "green");
        }
    });
});

Но все, что я получаю, это -1 для всех циклов цикла из indexOf, когда я меняю indexOf(firstCol) на одно из чисел в массиве, он работает хорошо, но мне нужен динамический var. Любые решения этого или то, что я делаю неправильно?

Вот скрипка: http://jsfiddle.net/raa8B/

Я тоже пробовал это с $.inArray

Теги:
arrays
html-table
indexof

2 ответа

2
Лучший ответ

Вы ищете строку в целочисленном массиве. Вы должны преобразовать в int перед indexOf

 var inArray = arr.indexOf(parseInt(firstCol));

JSFiddle

  • 0
    Спасибо, это сработало :))))
0

Смотрите эту скрипку.

Вы должны отдать свой text() целому числу, чтобы сравнить его с целыми числами в вашем массиве:

var firstCol = parseInt($(this).find("td:first").text());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню