#javascript
#javascript
Вопрос:
Мне нужно сопоставить три условия, чтобы страница могла отображать соответствующий результат для этих фильтров. Я попытался добавить amp;amp; между тремя условиями, но это не сработало. Я не раскрываю здесь реальный код, но я показал его без оригинальных имен переменных.
if(localStorage.getItem("eg1") == 30000 amp;amp; eg2 == 1 amp;amp; eg3 == use){};
eg2 и eg3 — это просто переменные, они не являются localstorage.
Комментарии:
1. Не
eg2 == 1
должно бытьocalStorage.getItem("eg2") == 1
? И я подозреваю, что то же самое дляeg3
.2. Пожалуйста, проверьте
localStorage.getItem("eg1")
, действительно ли что-то возвращается.3. @VLAZ Извините, я не понял
4. Консоль ваших локальных элементов хранения и их типов. Обычно все они будут сохранены в виде строки, если используются в необработанном виде, поэтому у вас будет сравнение между строкой и числами, т.Е. «30000» == 30000
5. @Beshamberchaukhwan проверка типа отсутствует, 3000 == ‘3000’ допустимо. проверка типов потребует
===
Ответ №1:
Это должно быть:
if((localStorage.getItem("eg1") == 30000) amp;amp; (eg2 == 1) amp;amp;
(eg3== use)){};
Комментарии:
1. Все они не являются локальным хранилищем. Только первое, а все остальные являются переменными
2. О, вы проверили, все ли переменные дают значение, используя журнал консоли перед условием?
3.Попробуйте это и проверьте, поступает ли вывод в режиме разработчика
console.log(localStorage.getItem("eg1") );
console.log(eg2);
console.log(eg3 );
4. Все переменные и локальное хранилище также работают, я проверил, также есть ли какие-либо проблемы с моим кодом. If работал, когда у меня было только условие локального хранилища. но когда я ввел другие условия с переменными, if не показал никаких результатов
5. @VishalPillai Попробуйте добавить скобки для разделения 3 условий, как указано выше, это сработает.
Ответ №2:
Вот немного более чистый способ сделать это:
const a = ["eg1", "eg2", "eg3"].map(e => localStorage.getItem(e));
if (a[0] == 30000 amp;amp; a[1] == 1 amp;amp; a[2] == use) {
//
}
И менее динамичный, но более короткий способ сделать это:
if ([30000, 1, use].map((e, i) => e == localStorage.getItem("eg" i )).includes(false)) {
}
Комментарии:
1. Извините, я не понимаю ваш код. Я не продвинутый автор javascript. Я начал только в прошлом году.
Ответ №3:
Попробуйте разложить проблему, чтобы лучше ее проанализировать:
var e1 = localStorage.getItem("eg1") === 30000;
var e2 = eg2 === 1;
var e3 = eg3 === use;
Я использовал triple equal, поскольку, полагаю, вы не хотите принуждения к типу.
Поскольку вы не можете показать исходный код, если вы не разместите какой-либо журнал своих результатов, довольно сложно представить, какие переменные могут содержать с соответствующим уровнем достоверности.
Уверен, что независимое рассмотрение ваших условий должно помочь вам определить, куда попадают ваши догадки, чтобы исправить то, что выглядит как простое условие ветвления.
Комментарии:
1. Это не идея, вы здесь, потому что не можете понять, как заставить работать простые 3 условия, если оператор сокращен. Я просто пытаюсь, не имея доступа к вашей информации, помочь вам раз рассуждать о вашей проблеме. Пожалуйста
2. Извините, я не хотел быть грубым. Я боялся, что кто-нибудь поймет идею моего сайта из кода.
3. Я не говорил вам не копировать мою идею. Я сказал, что в целом
Ответ №4:
localStorage.getItem
возвращает значение в виде строки.
Попробуйте использовать if(localStorage.getItem("eg1") == "30000" amp;amp; eg2 == 1 amp;amp; eg3 == use){};