JavaScript Function Problem
Здравейте, Искам да ви попитам защо в следният JS код ми се Валидира функцията за rPasswordValidation, обаче паролата когато съвпадне пак дава грешка , че не съвпада ?
Здравейте, Искам да ви попитам защо в следният JS код ми се Валидира функцията за rPasswordValidation, обаче паролата когато съвпадне пак дава грешка , че не съвпада ?
Както каза колегата по-горе, имаш недефинирана променлива във функция:
function rPasswordValidation(rPassword){ if(password != rPassword){ alert('Паролите не съвпадат'); return false; } return true; }
Забележи променливата rPassword, която съм болднал и подчертал. Нея можеш да ползваш, защото си я подал като параметър на функцията. Но от къде идва променливата password? Нямаш я във функцията, нямаш я и като глобална. Тя съществува само във функцията formValidation и никъде другаде.
Представи си г като математическа функция f(x) = x ^ 2. Това е функция, на която подаваш Х и тя ти връща квадрата от Х. Чудесно, само че твоят пример изглежда като следната математическа функция f(x) = x + y. Подаваш хикс и тя ти връща сбора на Х със У. Чудесно, само че тази функция не знае за У и то е неизвестно.
Представено в код проблемът ти изглежда така
function sum() { var x = 4; var y = 6; sumTwoNumbers(y); // подаваш само Y (6) } function sumTwoNumbers(y) { console.log(x + y); // нямаме достъп до X }
А неговото решение така:
function sum() { var x = 4; var y = 6; sumTwoNumbers(x, y); // подаваш Х и У } function sumTwoNumbers(x, y) { console.log(x + y); // имаш достъп до Х от параметрите на функцията }
function rPasswordValidation(password, rPassword){
if(password != rPassword){
alert('Паролите не съвпадат');
return false;
}
return true;
}
Направих го и в горния иф: if(rPasswordValidation(password,rPassword))
Обаче проблемът е пак същия :( !
Излиза alert, че паролите не съвпадат, така ли?
Да точно :) !
Пусни един console.log() на password и rpassword и виж какви са стойностите им. Да не би да не взимаш правилно стойностите от html-a? Например id атрибута на някое от двете полета да е сбъркан.
Всъщност, до колкото си спомням джаваскрипт връща обект от тип HTMLElement когато кажеш getElementById(). Ако иска да сравняваш стойностите им на тези обекти, трябва да им вземеш стойностите, което ставаше през полето value.
Т.е. във функцията за сравнение трябва да сравняваш rPassword.value != password.value
Всичко е както трябва няма объркани ид-та. Всичко е ОК .
Виж последния ми коментар. Сравняваш обекти вместо стойности. Това би трябвало да излзе на console.log-a :)
Да , Благодаря Ви много . Сега се оправи :)