2013-11-13 3 views
0

Я пытаюсь вытащить магазины, используя условные заявления. При поиске дилеров, оптовых или розничных, соответственно, из меню опций выбора отображаются результаты. Однако я не могу отобразить все местоположение, если выбрано «Все». Если я удалю & & (locationData ['category'] === 'Dealer' || 'Wholesale' || 'Retail'), я могу показать все местоположения, но я не могу отображать местоположения магазинов на основе каждого категория. Как настроить условный оператор?Как показать результаты массива с помощью условного оператора jQuery?

Это то, что я имею в 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++; 
    }); 
} 
+0

Покажите нам кусок jQuery, о котором идет речь. – Exception

ответ

1

Я не совсем уверен, что вопрос вы спрашиваете, так что я буду отвечать несколько вещей, которые происходят в вашем вопросе.

Если вы хотите знать, как получить значение из выбранного объекта, вы можете сделать это так:

$("#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; 
} 
+0

Благодарим за помощь! Я не заметил, что вы уже ответили на мой вопрос. Я присоединился к этому форуму 2 дня назад, я все время ждал уведомления по электронной почте. Извините .. Если я удалю (item === 'Dealer' || item === 'Wholesale' || item === 'Retail')), я могу отображать каждую категорию, но я не могу показать все местоположение , – juns

Смежные вопросы