如何使用jQuery条件语句显示数组结果?

时间:2013-11-13 04:21:03

标签: javascript jquery arrays

我正在尝试使用条件语句来提取商店位置。当我从选择选项菜单中分别搜索经销商,批发商或零售商时,会显示结果。但是,如果选择了全部,则无法显示所有位置。如果我删除&&(locationData ['category'] ==='经销商'||'批发'||'零售'),我可以显示所有位置,但我可以' t显示基于每个类别的商店位置。如何设置条件语句?

这就是我在HTML中所拥有的:

<select id="category" name="category">
    <option value="" selected>All</option>
    <option value="Dealer">Wholesale &amp;Retail</option>
    <option value="Wholesale">Wholesale</option>
    <option value="Retail">Retail</option>
</select>

这就是我在js中所拥有的。

if(settings.maxDistance === true && firstRun !== true){ 
    if((locationData['distance'] < maxDistance)&&(locationData['category']=== 'Dealer' || 'Wholesale' ||'Retail')) {
       locationset[i] = locationData;
    } else {
       return;
     }
    } else {
       locationset[i] = locationData;
    }
    i++;
    });
}

1 个答案:

答案 0 :(得分:1)

我不完全确定你问的是什么问题,所以我会回答你问题中发生的几件事。

如果您想知道如何从select对象获取值,可以这样做:

$("#category").val()

如果您想知道如何检测“全部”选项,那么您应该将HTML更改为此(为“全部”项设置一个值):

<select id="category" name="category">
     <option value="All" selected>All</option>
     <option value="Dealer">Wholesale &amp;Retail</option>
     <option value="Wholesale">Wholesale</option>
     <option value="Retail">Retail</option>
</select>

你可以用这样的条件检查它:

if ($("#category").val() === "All") {
    // All is selected
}

我还在您的代码中看到您的条件错误。你不能比较像这样的多个事情:

&&(locationData['category']=== 'Dealer' || 'Wholesale' ||'Retail')

你必须分别与每一个进行比较:

&& (locationData['category']=== 'Dealer' || locationData['category'] === 'Wholesale' || locationData['category'] === 'Retail')

或者,使用临时变量来保存比较值,您的代码可能如下所示:

if (settings.maxDistance && !firstRun) { 
    var item = locationData['category'];
    if((locationData['distance'] < maxDistance) && (item === 'Dealer' || item === 'Wholesale' || item === 'Retail')) {
        locationset[i] = locationData;
    } else {
        return;
    }
} else {
    locationset[i] = locationData;
}

如果你经常这样做,有时候,制作一个可以用作查找表的静态对象是有用的:

var categories = {Dealer: true, Wholesale: true, Retail: true};
if (settings.maxDistance && !firstRun) { 
    if((locationData['distance'] < maxDistance) && (categories.hasOwnProperty(locationData['category'])) {
        locationset[i] = locationData;
    } else {
        return;
    }
} else {
    locationset[i] = locationData;
}