我正在尝试使用条件语句来提取商店位置。当我从选择选项菜单中分别搜索经销商,批发商或零售商时,会显示结果。但是,如果选择了全部,则无法显示所有位置。如果我删除&&(locationData ['category'] ==='经销商'||'批发'||'零售'),我可以显示所有位置,但我可以' t显示基于每个类别的商店位置。如何设置条件语句?
这就是我在HTML中所拥有的:
<select id="category" name="category">
<option value="" selected>All</option>
<option value="Dealer">Wholesale &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++;
});
}
答案 0 :(得分:1)
我不完全确定你问的是什么问题,所以我会回答你问题中发生的几件事。
如果您想知道如何从select对象获取值,可以这样做:
$("#category").val()
如果您想知道如何检测“全部”选项,那么您应该将HTML更改为此(为“全部”项设置一个值):
<select id="category" name="category">
<option value="All" selected>All</option>
<option value="Dealer">Wholesale &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;
}