Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с оператором if () в JavaScript
 
 автор: exkluzive   (04.08.2008 в 14:12)   письмо автору
 
 

Здравствуйте, у меня такая проблема:
Существует пхп страничка на которой есть форма (myForm) из которой, при нажатии кнопки значения текстовых полей летят в ява функцию vip_pole()

function vip_pole() {
otvet = document.myForm.otvet.value
a = document.myForm.a.value
b = document.myForm.b.value

if (otvet!=a+b) {
alert("ответ неправильный");
return false;
}

}

в vip_pole() летят переменные:
a=2;
b=3;
otvet=5;

задача такова, если a+b неравно otvet, тогда выводить окошко "ответ неправильный"

Но независимо от того правильный, или неправильный ответ, всёравно высвечивается окошко "ответ неправильный"...

почему за каждым разом срабатывает if (otvet!=a+b) ???

  Ответить  
 
 автор: вялый   (04.08.2008 в 14:39)   письмо автору
 
   для: exkluzive   (04.08.2008 в 14:12)
 

Всё дело в том, что метод .value возвращает данные в виде string, а не number. И, соответственно у вас проверялось не сумма а одинаковость полей. Для преобразования из string в integer существует метод parseInt. Вот переписанная функция:
 function vip_pole() {
var otvet=parseInt(document.myForm.otvet.value);
var a=parseInt(document.myForm.a.value); 
var b=parseInt(document.myForm.b.value); 
if(otvet!=(a+b))alert("ответ неправильный");
}

var означает, что переменная локальная, и что эта переменная не будет видна за пределами функции, и соответственно её нельзя будет изменить за пределами функции. Когда var нету, переменная объявляется как глобальная, и она будет видна за пределами функции. Но, вместе с тем могут появиться проблемы при совпадении имён переменных с другими подключаемыми скриптами. По идее глобальные переменные использовать вообще нельзя, только в самых крайних случаях
Для просмотра типа переменной существеут метод typeof()

  Ответить  
 
 автор: exkluzive   (04.08.2008 в 14:51)   письмо автору
 
   для: вялый   (04.08.2008 в 14:39)
 

Вялый, огромное спасибо за столь ценную информацию.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования