Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2010, 22:02   #1
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию Непонятное поведение скрипта

Подскажите плиз, есть кнопка и скрипт к ней:
Код:
	<script language="JavaScript">
                      function test(){
                      var x = document.getElementById('cha').value;
                      var y = document.getElementById('chb').value;
                       if (x<=y) alert('a должно быть больше b!'); 
                        document.forms[0].submit();     
                       }
                      </script>
      <input  name="ghf" type="button" value="Расчет" onClick="test()">
когда я ввожу в эдит/инпут/ число а(cha) до 10, то всё норм, а если ввести cha=10 и chb=1, то скрипт выполняется неверно, т.е. появляется надпись, хотя не должна.. Что-то я непонимаю, 10 считывается как 1? но почему..?
вот ещё код инпута на всякий случай
Код:
<input name="cha" type="text" id="cha" size="9">
AlexDn вне форума Ответить с цитированием
Старый 04.08.2010, 06:34   #2
verygood
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 61
По умолчанию

Ты считываешь строки, а не числа.
Посмотри так: alert(typeof x);
По простому преобразовать можно так: x=x*1; alert(typeof x);
Но это справедливо, если это действительно цифры.
verygood вне форума Ответить с цитированием
Старый 04.08.2010, 06:55   #3
verygood
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 61
По умолчанию

Ты получаешь текст, а не число, посмотри:
alert(typeof x);
По простому преобразуем так, x=x*1; alert(typeof x);
И очень не желательно использовать имя функции совпадающие с именем встроенной функции. Добавь буковку или циферку, бережёного...
verygood вне форума Ответить с цитированием
Старый 04.08.2010, 15:24   #4
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

попробуйте преобразовать строку input в число
Код HTML:
   parseInt(document.getElementById('cha').value, 10);
где 10 это десятеричное основание

Последний раз редактировалось slips; 04.08.2010 в 15:27.
slips вне форума Ответить с цитированием
Старый 04.08.2010, 17:31   #5
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию

slips, спасибо! так и написал:
Код:
 var x = parseInt(document.getElementById('cha').value, 10);
вроде бы всё работает..
AlexDn вне форума Ответить с цитированием
Старый 06.08.2010, 06:06   #6
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию

slips, насколько я понял, parseInt возвращает только целую часть числа, т.е. int, а если нужно всё вернуть вместе с дробной частью..?
AlexDn вне форума Ответить с цитированием
Старый 06.08.2010, 06:14   #7
verygood
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 61
По умолчанию

parseFloat(); и будет с дробью.
verygood вне форума Ответить с цитированием
Старый 06.08.2010, 06:16   #8
AlexDn
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 93
По умолчанию

Да, гут, спасибо..
AlexDn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
непонятное поведение cout jammer77 Общие вопросы C/C++ 22 02.07.2010 11:56
Непонятное поведение типа J-Max Общие вопросы Delphi 12 10.02.2010 17:15
Непонятное поведение алгоритма master_root Общие вопросы Delphi 3 11.06.2008 14:32
Непонятное поведение программы на Delphi Kashp Помощь студентам 10 14.12.2007 21:12