Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оператор или, ||, Не могу понять логику условия 
:(
    Опции темы
G0rin
Дата 13.11.2010, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



похоже не могу разобраться в логике, необходимо, чтоб если последний знак в окне ввода не равен знакам умножения, деления, вычитания и сложения, то выполнялся определенный код, если символ, то ничего не происходило. Но почему-то условие работает только с первым значением, тоесть если последний знак + то код действительно не работает,  но если "-", "*" или "/" Код все равно выполняется. пример условия
Код

if (cons.value.substr(-1) !=  ('+' || '-' || '*' || '/')) 

PM MAIL   Вверх
Amphiluke
Дата 14.11.2010, 09:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Так никто не делает.
Вот пример, как это в норме может выглядеть.
Код

if (/.*[\+\-\*\/]$/.test(cons.value)) {
    ...


Добавлено через 3 минуты и 38 секунд
Ну или наоборот, если нужно отрицательное условие, то 
Код

if (!/.*[\+\-\*\/]$/.test(cons.value)) {
    ...

PM   Вверх
NLspieler
Дата 14.11.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



Код

if (cons.value.substr(-1) !=  ('+' || '-' || '*' || '/'))


Нужно писать так:

Код

var c = cons.value.substr(-1) ;
if (  (c != '+') || (c != '-') || (c != '*') || (c != '/')   )


но такое условие всегда будет возвращать true, поэтому нужно вместо || использовать &&

Код

var c = cons.value.substr(-1) ;
if (  (c != '+') && (c != '-') && (c != '*') && (c != '/')   )



PM MAIL   Вверх
G0rin
Дата 14.11.2010, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Amphiluke, мне просто это надо к зачету по пройденному материалу, а регулярные ворожения мы не использовали, но спасибо!

NLspieler, спасибо!
PM MAIL   Вверх
SelenIT
Дата 15.11.2010, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 7
Всего: 401



Цитата(G0rin @  13.11.2010,  23:26 Найти цитируемый пост)
если последний знак + то код действительно не работает,  но если "-", "*" или "/" Код все равно выполняется

Логические операторы в JS "короткозамкнутые", т.е. цепочка условий "или" возвращает первый элемент, приводящийся к логическому true (и тем самым делающий истинным всё составное условие). В данном случае первым таким элементом является строка '+', поэтому именно она оказывается итоговым значением всего выражения в скобках, которое и используется в сравнении.

Часто этим свойством условий пользуются для сокращения записи, напр. var event = e || window.event (если переменной e нет, будет использована глобальная переменная).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
gcc
Дата 15.11.2010, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



если я праивльно понял, то можно еще так:
(примерно)
Код

var hash = { '+' : 666, '-' : 666, '*' : 666 , '/' : 666};

// var cсс = cons.value.substr(-1) ;
//  if  (hash[ссс]) {
//
// Pluss:
if  (hash['+']) {

}


Это сообщение отредактировал(а) gcc - 15.11.2010, 12:25
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.