0

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

这就是我在 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++;
    });
}
4

1 回答 1

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;
}
于 2013-11-13T04:25:05.637 回答