Я пытаюсь использовать window.Расположение.href в цикле

#javascript #arrays #for-loop

#javascript #массивы #для цикла

Вопрос:

Я хочу перенаправить пользователя на новую страницу, если его данные для входа верны. Однако, когда я использую window.location.href("portal.html") in простой оператор if, чтобы проверить, соответствуют ли данные пользователя уже сохраненным данным в переменной, это работает, но когда я использую его в цикле for для перебора массива сохраненных данных, он не отображает portal.html страницу.

пожалуйста, помогите, спасибо.

  for(let i = 0; i<= objPeople.length; i  ){
      if(name === objPeople[i].username amp;amp; pass === objPeople[i].password){
        window.location.href="portal.html"
        
        return
      
      }
     
    } console.log("incorrect login details");

 

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

1. используйте break вместо return

2. Вы уверены, что имя пользователя и пароль совпадают?

3. Можете ли вы показать нам пример рабочего кода, а также то, что находится внутри вашего objPeople массива, а также name и pass ?

4. используйте i < objPeople . длина вместо i <= objPeople . длина будет нарушена, если данные не совпадут.

5. @AdnanAhmed Я использовал Break, и это сработало, спасибо.

Ответ №1:

Использовать find вместо for цикла:

 if (objPeople.find(x => x.username === name amp;amp; x.password === pass))
  window.location.href="portal.html"
else
  console.log("incorrect login details")
 

Я протестировал ваш код и, как упоминал Аднан Ахмед, он не работает из-за return инструкции. Так и должно быть break .

Ответ №2:

Попробуйте сделать это так

  let matches = false;
 for(let i = 0; i<= objPeople.length; i  ){
  if(name === objPeople[i].username amp;amp; pass === objPeople[i].password){
   matches = true;
  
  }
} 
if(matches){
 window.location.href="portal.html"
}
 

Ответ №3:

Просто удалите return . return оператор предотвращает перенаправление на новую страницу. Я попробовал следующий пример, и он работает:

 for (let i = 0; i < 20; i  ) {
  if (i === 10)
    window.location.href = "https://google.com";
}