Jquery inArray总是在循环中返回-1

时间:2016-02-16 12:15:08

标签: javascript jquery

我遇到了Jquery inArray的问题。

//Get selected devices
selectedDevices = $('.selectDevices').val();
console.log(selectedDevices);

//If nothing selected, do nothing
if(selectedDevices == null || selectedDevices == ""){}

    //Else remove devices not selected
    else{ 
        //Loop thru table rows with class "enhet"
        $.each( $('td.enhet'), function() {

        thisDevice = $('.enhet').text();

        var found = $.inArray(thisDevice, selectedDevices);

        console.log(found);

        if (found > -1) {
            console.log(thisDevice);
        }
        else {
            console.log('nope');
        }


    })
}

Console.log(selectedDevices)给出:
["GulAvformning", "RosaAvformning"]

Console.log(找到)给:(每次!!)
-1

Console.log(thisDevice)给出:
``

Console.log('nope')给出:
nope

即使thisdevice中存在selectedDevices,我也会得到其他情况 我错过了什么?

selectedDevices是一个数组。我检查了它:console.log(selectedDevices [1]);它给了我一个设备。

4 个答案:

答案 0 :(得分:2)

对元素使用MMM-yyyy方法,然后使用each()标识当前元素:

$(this)

答案 1 :(得分:1)

使用:

thisDevice = $(this).text();

而不是:

thisDevice = $('.enhet').text();

答案 2 :(得分:0)

您正在迭代但不选择迭代器。将您的行更改为: ...

$.each( $('td.enhet'), function(i) {

        thisDevice = $('td.enhet').eq(i).text();

...

答案 3 :(得分:0)

如果SubP<SubF>提供console.log(selectedDevices),而["GulAvformning", "RosaAvformning"]提供console.log(thisDevice),那么""将返回$.inArray(thisDevice, selectedDevices),因为没有-1 ""中的["GulAvformning", "RosaAvformning"]。有关如何正确获取thisDevice的正确值的详细信息,请参阅Marcos Pérez Gude's solution