Не работает "или" в if
Вот простенький код:
<form name="age"> <input type="text" value="" name="pole"> </form> <script> function fage () { var a = document.age.pole.value if (document.age.pole.value == 1) { alert('Один пользователь') } if (document.age.pole.value == 2||3||4) { alert(+a+ 'Пользователя') } if (document.age.pole.value == 5||6||7||8||9||10||11||12||13||14||15||16||17||18||19||20) { alert(+a+ 'Пользователей') } } </script> <input type="button" value="Сколько?" onclick="fage()"> Почему если я введу "2" например то он мне выдает вначале:2Пользователя(как и надо),а потом 2 пользоватеей???Хотя по условию не должен |
Цитата:
1 === 1 || 2 || 3 // вернет trueно 3 === 1 || 2 || 3 // вернет 2 :0П очему? Все просто! Оператор || возвращает то, что при приведении к boolean дает true. Т.е. в первом: 1 === 1 - это true. Boolean(true) === true; поэтому возврает true. А во-втором случае: 3 === 1 - это false; А вот Boolean(2) === true, поэтому возвращает 2. А в твоем случае лучше использовать switch: switch(a){ case 1: alert( 'Один пользователь' ); break; case 2: case 3: case 4: alert( a + 'пользователя' ); break; default: alert( a + 'пользователей' ); }; И еще: +a+ 'Пользователя'Т.е. ты сначала строку приводишь к числу, чтобы потом интерпритатор привел это число к строке, чтобы сложить со строкой? Не бред ли??? |
Спасибо.
Цитата:
|
Я вот к чему:
alert( '1' + '' === +'1' + '' );Если нет разницы, зачем делать лишние телодвижения? |
Цитата:
<script type="text/javascript"> window.onload = function() { var events = ['keyup', 'change'], i = events.length, input = document.getElementById('input'); while(i--) { input['on'+events[i]] = function() { var _value = this.value; if(_value != '' && /\d/.test(_value)) { alert('пользовател'+(_value == 1 ? 'ь' : _value >= 2 && _value <= 4 ? 'я' : 'ей')); } }; break; } }; </script> <input type="text" id="input" value="" /> |
Цитата:
|
Цитата:
|
для компа это не просто плюсик перед строкой - это перевод из одного типа в другой
не дурмаю, что всё так легко |
Цитата:
<script type="text/javascript"> window.onload = function() { var events = ['keyup', 'change'], i = events.length, input = document.getElementById('input'); while(i--) { input['on'+events[i]] = function() { var _value = this.value; if(_value != '' && /\d/.test(_value)) { var regex = _value.match(RegExp('\\d'+(_value <= 20 ? '{1,}' : '')+'$')); alert('пользовател'+(regex == 1 ? 'ь' : regex >= 2 && regex <= 4 ? 'я' : 'ей')); } }; break; } }; </script> <input type="text" id="input" value="" /> |
Цитата:
|
Часовой пояс GMT +3, время: 03:30. |