2015-12-21 4 views
0

Возможно, он немного закодирован для части, о которой я прошу, но я дам решения, которые работают, и тот, который этого не делает.Javascript If/Else Issue

Первый пример работы:

function SignUpClick(){ 
if (document.UserSignUp.UserEmail.value == document.UserSignUp.ConfirmEmail.value); 
else {alert ("Your email does not match - Please re-enter"); return;} 
if (document.UserSignUp.UserPassword.value == document.UserSignUp.ConfirmPassword.value); 
else {alert ("Your password does not match - Please re-enter"); return;}} 

Это второй пример также работает:

function SignUpClick(){ 
if (document.UserSignUp.UserEmail.value != document.UserSignUp.ConfirmEmail.value) 
{alert ("Your email does not match - Please re-enter"); return false;} 
else return true;} 

Но этот последний не работает:

function SignUpClick(){ 
if (document.UserSignUp.UserEmail.value != document.UserSignUp.ConfirmEmail.value) 
{alert ("Your email does not match - Please re-enter"); return false;} 
else return true; 
if (document.UserSignUp.UserPassword.value != document.UserSignUp.ConfirmPassword.value) 
{alert ("Your password does not match - Please re-enter"); return false;} 
else return true;} 

Интересная часть о прошлом Например, первое подтверждение работает, но когда я добавляю и проверяю второе подтверждение, то оно не работает и Я не совсем понимаю, почему. В качестве побочного примечания я проверил второе подтверждение самостоятельно без первого, и он работал нормально. Что-то связано с тем, когда добавляется второй или более.

Любые мысли или предложения о том, что мне может не хватать?

ответ

2

Это потому, что вы возвращаются в любом случае if else (1-й), поэтому второй, если еще не будет исключен .. :)

function SignUpClick(){ 
    if (document.UserSignUp.UserEmail.value != document.UserSignUp.ConfirmEmail.value) 
    {alert ("Your email does not match - Please re-enter"); return false;} 
    else return true; 
//the execution doesnt reach this part of the code given below 
    if (document.UserSignUp.UserPassword.value != document.UserSignUp.ConfirmPassword.value) 
    {alert ("Your password does not match - Please re-enter"); return false;} 
    else return true;} 
2

В вашем последнем примере, он не достигнет второго if условия, так как вы возвращаете верно в else состояния первого if

function SignUpClick() 
{ 
    if (document.UserSignUp.UserEmail.value != document.UserSignUp.ConfirmEmail.value) 
    { 
     alert ("Your email does not match - Please re-enter"); return false; 
    } 
    else 
     return true; // this line will ensure that second if will not be reached 
    if (document.UserSignUp.UserPassword.value != document.UserSignUp.ConfirmPassword.value) 
    { 
     alert ("Your password does not match - Please re-enter"); return false; 
    } 
    else 
    return true; 
} 

вместо попробовать этот

function SignUpClick() 
{ 
    if (document.UserSignUp.UserEmail.value != document.UserSignUp.ConfirmEmail.value) 
    { 
     alert ("Your email does not match - Please re-enter"); 
     return false; 
    } 
    else if (document.UserSignUp.UserPassword.value != document.UserSignUp.ConfirmPassword.value) 
    { 
     alert ("Your password does not match - Please re-enter"); 
     return false; 
    } 
    return true; 
} 
1

Это потому, что когда вы делаете return, он заканчивает функцию прямо там, и не продолжает к финалу, если/другое заявление

1

используется возврат в первом, если других, разорвать беговой код, Попробуйте это -

function SignUpClick(){ 
    if (document.UserSignUp.UserEmail.value != document.UserSignUp.ConfirmEmail.value) 
    { 
     alert ("Your email does not match - Please re-enter"); 
     return false; 
    } 
    else if (document.UserSignUp.UserPassword.value != document.UserSignUp.ConfirmPassword.value) 
    { 
     alert ("Your password does not match - Please re-enter"); return false; 
    } 
    else return true; 

} 
1

Вы только что вернули true или false при первом проверке if/else. Поэтому, когда функция запускается, она все равно вернет данные и никогда не перейдет к проверке пароля. Ниже будут работать:

function SignUpClick(){ 
    if (document.UserSignUp.UserEmail.value 
    != document.UserSignUp.ConfirmEmail.value) { 
    alert ("Your email does not match - Please re-enter"); return false; 
    } 
    if (document.UserSignUp.UserPassword.value 
    != document.UserSignUp.ConfirmPassword.value) { 
    alert ("Your password does not match - Please re-enter"); return false; 
    } 
    return true; 
} 
0

Я пошел с ответом AkshayJ, потому что у него был больше смысла. По сути, они говорили, так как у меня было возвращение как в первом, так и в первом альбоме, поэтому он не пошел на второе If и Else. В принципе, у вас может быть только одно возвращение за &. Если вы собираетесь иметь несколько. Если & Другие утверждения. Я могу подтвердить это, потому что я пробовал то, что говорили другие, например, вынимая False and True, я также попытался сделать его похожим на else {return true;} и else {return;}. Таким образом, это не имело никакого отношения к тому, было ли это правдой или ложью и имело ли это {}.

Хотя те, кто говорят, что его просто из-за одного возвращения в любом из первых If и Else или из-за каких-либо If и Else, которые имеют возврат в инструкции else ... это просто неправильно и предположение. Его предположение из-за моего первого примера доказывает, что неправильно он показывает возвращение в его Else и 2nd If & Else работал.

Также, когда я проверил, что сказал AkshayJ, изменив код на else {} или просто вытащив инструкцию Else, в обоих направлениях пусть вторая подтвердит работу.

Plus для продолжения двух параграфов/предложений выше, возврат может работать в операторе If и отпустить его на второй Если, так что это не просто работать только в Else:

function SignUpClick(){ 
if (document.UserSignUp.UserEmail.value != document.UserSignUp.ConfirmEmail.value) 
{alert ("Your email does not match - Please re-enter"); return false;} 
if (document.UserSignUp.UserPassword.value != document.UserSignUp.ConfirmPassword.value) 
{alert ("Your password does not match - Please re-enter"); return false;}} 

Приведенный выше код работает. Спасибо за информацию AkshayJ и благодарю вас за всех, кто помог.

В качестве побочного примечания для тех, кто дал свой пример с помощью Else If, ​​из-за контекста того, что находится в If & Else, его плохая практика, чтобы попытаться изменить динамический поток того, как условия в настоящее время настроены. Не просил объединить их, когда они были уже раздельными. Для справки, перейдите сюда: w3schools.com/js/js_if_else.asp

Итак, да, примеры комбайнов работали, но это не то, о чем я просил. Он также не решает тот факт, что с этими примерами комбинирования это не устраняет проблему, если я должен добавить еще один оператор ifElse. Поскольку Акшайдж объяснил это, ответ приходит к ним, еще раз спасибо.

+0

@Batbayar - Ваш ответ правильный, спасибо. – Rami

+0

Рад, что это помогло вам. .. Хорошее кодирование :) – AkshayJ

+0

@AkshayJ - Это очень помогло, не знало, что о возврате. Хотя сейчас я полагаю, что я должен помочь двум и всем другим, которые могли бы попробовать использовать Else If, ​​не зная, что он делает - объяснение здесь: http://www.w3schools.com/js/js_if_else.asp, и это часть того, почему я не приняли их ответы. знак равно – Rami