#javascript #html #arrays #forms #web
#javascript #HTML #массивы #формы #веб
Вопрос:
Как я могу сделать так, чтобы сообщение о входе в систему скрывалось или исчезало после успешного входа пользователя в систему .. Кажется, что «Имя пользователя или пароль неверны» работает нормально, т.е. оно исчезает по истечении заданного времени в функции setTimeout, но сообщение «Пользователь вошел в систему», похоже, остается неизменным, т.епо истечении заданного времени оно не очищается, что я могу с этим поделать ?..Заранее спасибо
HTML code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.1/css/all.css" integrity="sha384-vp86vTRFVJgpjF9jiIGPEEqYqlDwgyBgEF109VFjmqGmIY/Y4HV4d3Gp2irVfcrp" crossorigin="anonymous">
<link rel="stylesheet" href="style.css">
<title>Login System</title>
</head>
<body>
<div class="card">
<div class="container">
<h3>Fransix web</h3>
<form>
<h4>Log-in to your account</h4>
<div class="field">
<i class="fas fa-user"></i>
<input type="text" id="username" placeholder="Username">
</div>
<div class="field">
<i class="fas fa-lock"></i>
<input type="text" id="password" placeholder="Password">
</div>
<a class="btn" href="#" onclick="getInfo()">Submit</a>
</form>
</div>
<h5 class="message"></h5>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="app.js"></script>
</body>
</html>
Код Javascript
var Users = [
{
username: "fransix",
password: "web"
},
{
username: "dave",
password: "spider"
},
{
username: "mike",
password: "battery"
}
]
function getInfo() {
var username = document.getElementById("username").value
var password = document.getElementById("password").value
var message = document.querySelector
(".message")
for(i = 0; i < Users.length; i ) {
if(username === Users[i].username amp;amp; password === Users[i].password) {
message.innerHTML = `${username} is logged in!!`
message.style.color = 'green';
return;
}
else {
message.innerHTML = `Username or password is incorrect`
message.style.color = 'red'
}
}
setTimeout(function() {
$(".message").hide()
},3000)
}
Комментарии:
1. Удалите оператор return; внутри, если условие успешного входа в систему.
Ответ №1:
Замените return
оператор в вашем операторе if на break
когда имя пользователя и пароль верны, вы возвращаетесь из функции, и, следовательно, код не доходит до setTimeout
вызова функции
Ответ №2:
function getInfo() {
var username = document.getElementById("username").value
var password = document.getElementById("password").value
var message = document.querySelector
(".message")
for(i = 0; i < Users.length; i ) {
if(username === Users[i].username amp;amp; password === Users[i].password) {
message.innerHTML = `${username} is logged in!!`
message.style.color = 'green';
setTimeout(function() {
$('.message').hide();
},3000)
return;
}
else {
message.innerHTML = `Username or password is incorrect`
message.style.color = 'red'
}
}
}
да, вы можете использовать ключевое слово break вместо return / использовать функцию setTimeout перед ключевым словом return или вы можете удалить ключевое слово return