Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   По поводу синтаксиса, что не так (https://javascript.ru/forum/misc/52616-po-povodu-sintaksisa-chto-ne-tak.html)

Skriptor 26.12.2014 23:47

По поводу синтаксиса, что не так
 
Почему не срабатывает функция?
http://jsfiddle.net/Webtoper/85krmpwb/

Aetae 27.12.2014 00:01

Не срабатывает - потому что слева в фидле выбрано onLoad, а потому твой код помещается в анонимную функцию вызываемую при загрузке страницы, и функция check становится локальной, не доступной из глобальной области видимости. Потому при клике её просто не находит.

А работает не правильно, после убирания onLoad - потому что условие заданно не правильно:
if(numbers!=1 || numbers!=2 || numbers!=3)
если( (numbers не равно 1) или (numbers не равно 2) или (numbers не равно 3) )
Допустим numbers == 1, ок, первое условие ложно, но уже второе(numbers не равно 2) - истинно. Условие должно быть:
if(numbers!=1 && numbers!=2 && numbers!=3)


P.S. В javascript не принято кидать исключения на каждый чих. Исключения следует использовать по прямому назначению(критические ошибки). Для всего остального более чем хватает обычной логики.

Skriptor 27.12.2014 00:26

Ага, спасибо! Понятно теперь.
Думал просто сначала, что && потребует чтобы было введено вместе 1 и 2 и 3 (то есть, если ввести, например, 1 или 2 просто - то не сработает).

ruslan_mart 27.12.2014 06:33

Логичней будет написать такое условие:

if(numbers < 1 || numbers > 3) {

}

Skriptor 27.12.2014 23:58

Цитата:

Сообщение от Ruslan_xDD (Сообщение 348519)
Логичней будет написать такое условие:

if(numbers < 1 || numbers > 3) {

}

А если пользователь введет текст?


Часовой пояс GMT +3, время: 08:13.