Как создать оператор if с условиями, которые включают «и» в javascript

#javascript

#javascript

Вопрос:

Я пытаюсь сделать так, чтобы пароль и пароль подтверждения совпадали, без того, чтобы они оба были просто оставлены пустыми.

Я хотел бы добавить в этой части о том, что поля пароля нельзя оставить пустыми в операторе if, сказав, что пароли имеют одинаковое значение, и эти значения не являются пустыми.

Функция работала нормально, когда это был просто оператор if, говорящий, что пароли должны совпадать, чтобы появилось приветственное предупреждение, и обнаружил, что символом and в javascript является amp;amp;, но я не знаю, как использовать его в контексте.

 var check = function() {

if (document.getElementById('psw').value ==
document.getElementById('psw-repeat').value)
amp;amp;
(document.getElementById('psw').value) != "" 
amp;amp;
(document.getElementById('psw-repeat').value) != "" } 

else {
alert("passwords do not match")
  }
}
  

Я бы ожидал, что этот код сообщит, что пароли не были заполнены, если они этого не сделали, скажет приветствие, если пароль и пароль подтверждения совпадают, и скажет, что пароли не совпадают, если они не совпадают.

Я не уверен, что я сделал не так, но был бы рад, если бы кто-нибудь мог помочь.

:))

Комментарии:

1. Все должно заключаться в одну внешнюю пару круглых скобок if ( ... everything ... )

2. Если бы вы лучше отформатировали свой код, вы бы увидели свою проблему. Я бы получил линтер в вашей IDE, потому что это указало бы вам на проблему.

3. Пожалуйста, ознакомьтесь со скобками и кодом, их if предложение закрывается при первом сравнении: document.getElementById('psw').value == document.getElementById('psw-repeat').value .

4. Примеры, широко доступные в Интернете: w3schools.com/js/js_comparisons.asp

5. Наряду с предоставленными ответами я бы предложил использовать такие вещи, как атрибут required , а также для подобных ситуаций, чтобы браузер также помогал пользователям.

Ответ №1:

Вы не закрываете весь оператор if с помощью ()

Ответ №2:

Хорошо, лучший способ выполнить условия, подобные следующим. почему лучше

  • оптимизированный, вам не нужно снова и снова получать значения из dom для проверки условий

  • легко читаемое условие if.

  • Если код не читается, то это не лучший код

Поэтому всегда старайтесь нарушать условия

 function() {      
        var password = document.getElementById('psw').value;
        var password_repeat = document.getElementById('psw-repeat').value;
        if (password == password_repeat amp;amp; password != ""  amp;amp; password_repeat != "")
        { 
                // code ..........
        } 
        else 
        {
            alert("passwords do not match")
        }
    }
  

Для лучшей проверки кода и его стилизации используйте некоторые IDE, такие как VSCode Atom Bracket
но лично мне нравится VSCode

Комментарии:

1. большое вам спасибо, я использую atom, но я просто не лучший в его четком изложении :))

Ответ №3:

Единственная реальная проблема — это неуместные круглые скобки и фигурные скобки, но этот способ добавляет пару улучшений помимо этих простых исправлений.

 // Select HTML elements
const psw = document.getElementById("psw");
const pswRepeat = document.getElementById("psw-repeat");
const checkBtn = document.getElementById("checkBtn");

// Listen for button clicks
checkBtn.addEventListener("click", check);

// Validate passwords
function check(){
  if(pswRepeat.value === psw.value amp;amp; psw.value != ""){
    // We know they are the same, and psw is not empty (so neither is pswRepeat)
    alert("good");
  }
  else{
    alert("passwords do not match");
  }
}  
 <input id="psw" />
<input id="psw-repeat" />
<button id="checkBtn">Check</button>  

Ответ №4:

Вы забыли закрыть скобки.
Вам нужен лучший отступ для раннего обнаружения подобных проблем и некоторое разделение логики, чтобы код оставался читаемым.

Что — то вроде этого :

 var check = function() {

  if (isValid()) {
    //Welcome here
  } else {
    alert("passwords do not match")
  }
}

function isValid() {
  var psw = document.getElementById('psw').value;
  var repeatPsw = document.getElementById('psw-repeat').value;

  //Logic to check for password
  if (psw == repeatPsw amp;amp;
    psw != "" amp;amp;
    repeatPsw != ""
  )
    return true;

  return false;
}  

Комментарии:

1. да, мне действительно нужно стать лучше в настройке кода, большое вам спасибо за помощь 🙂