Мой код не работает, что не так?
Я новичок в JavaScript, но я последовал действительно хорошему учебнику, и я делаю знак во всплывающей форме, но это не работает... Идея в том, что у вас есть одно имя пользователя и один пароль, если оба они верны, вы будете перенаправлены на страницу. Я потерял HTML-код для формы, но в поле ввода идентификатор должен быть uName, а в поле пароля - pWord. Вот мой код JavaScript:
function myFunction(){
var uName = document.getElementById("uName").value;
var pWord = document.getElementById("pWord");
}
// This line controls the uName and pWord.
if(uName = "Admin",pWord = "Admin"){
// This line creates a pop-up with the name.
alert("Welcome " + uName);
// Need a line to redirect to a new page
// Need a line with the else statement
// Need a line to say if something if not all fields are filled
}
Имя пользователя должно быть Admin и пароль Admin. Если вы не ввели правильную комбинацию, вы должны получить сообщение типа "Неправильная комбинация".
6 ответов
Есть пара вопросов:
- Вы не получаете значение поля пароля, но объект
- Вы не проверяете учетные данные внутри функции
- Вы назначаете "Admin" для
uName
а такжеpWord
с одним=
- Вам нужно использовать
&&
чтобы соответствовать обоим тестам вашего оператора if
В качестве примечания: вы никогда не должны проверять логин с жестко заданным именем пользователя и паролем, это всегда доступно для пользователя, все, что вам нужно сделать, это щелкнуть правой кнопкой мыши в браузере и просмотреть источник, чтобы увидеть имя пользователя и пароль - это Сценарий входа отлично подходит для изучения работы JavaScript, но не применяйте такой способ входа в реальный мир, если только он не является сдерживающим фактором типа сканера.
=
устанавливает значение, ==
соответствует значению, ===
соответствует значению и типу (строка, объект, int)
function myFunction(){
var uName = document.getElementById("uName").value;
var pWord = document.getElementById("pWord").value;
// This line controls the uName and pWord.
if(uName == "Admin" && pWord == "Admin"){
// This line creates a pop-up with the name.
alert("Welcome " + uName);
// Need a line to redirect to a new page
// Need a line with the else statement
// Need a line to say if something if not all fields are filled
}
}
Чтобы бороться с вашими комментариями
// Need a line to redirect to a new page
window.location.href="/pagetoredirectto.html";
а также
// Need a line with the else statement
if(uName == "Admin" && pWord == "Admin"){
alert("Welcome " + uName);
} else {
alert( "User and Pass do not match" );
}
и это должно произойти сразу после того, как вы получите значения.. поэтому полный код находится в нижней части этого ответа
// Need a line to say if something if not all fields are filled
if( !uName || !pWord )
{
alert( "Enter both a username and password" );
return;
}
Мы используем return
здесь, чтобы остановить выполнение остальной функции
Полный код
function myFunction(){
var uName = document.getElementById("uName").value;
var pWord = document.getElementById("pWord").value;
// Need a line to say if something if not all fields are filled
if( !uName || !pWord )
{
alert( "Enter both a username and password" );
return;
}
// This line controls the uName and pWord.
if(uName == "Admin" && pWord == "Admin"){
alert("Welcome " + uName);
window.location.href="/pagetoredirectto.html";
} else {
alert( "User and Pass do not match" );
}
}
Это задание с =
оператор:
if (uName = "Admin",pWord = "Admin") {
Пока нужно сравнение ==
или же===
:
if (uName == "Admin" && pWord == "Admin") {
Также использование запятой ,
оператор не правильный (ну это правильно, но не в этом месте). Вам нужно логическое И &&
,
Назначение внутри if
check делает истинное выражение (строка "Admin" является правдивой), заставляя код всегда вводить if-block.
Измените свой код, как показано ниже, и проверьте:
function myFunction(){
var uName = document.getElementById("uName").value;
var pWord = document.getElementById("pWord").value;
if(uName != "" && pWord != ""){ /* Ensure both fields have value */
if(uName == "Admin" && pWord == "Admin"){
alert("Welcome " + uName);
/* Redirection code goes here */
}else{
/* If user is not Admin */
}
}else{
/* Validation message goes here */
}
}
Вот это я надеюсь
function myFunction(){
var uName = document.getElementById("uname").value;
var pWord = document.getElementById("pWord").value;
if (uName == "Admin" && pWord == "Admin") {
// This line creates a pop-up with the name.
alert("Welcome " + uName);
// Need a line to redirect to a new page
document.location = "http://www.google.de"
// Need a line to say if something if not all fields are filled
}else if (uName == "" || pWord == "") {
alert("Fill all fields");
// Need a line with the else statement
}else{
alert("Incorrect Combination");
}
}
<input id="uname"></input>
<input id="pWord"></input>
<input type="button" onclick="myFunction()" value="Login"></input>
Еще способ небезопасной версии сценария входа.
Если вы перейдете к отладке, вы можете увидеть имя пользователя и передать незашифрованный шифрованный текст.
Вы берете ссылку на конкретный объект в целом pWord
хотя вы намерены принять только значение поля пароля.
Также Вы назначаете "Админ" для uName
а также pWord
с одним =
, Для сравнения используйте ===
или же ==
хотя я бы порекомендовал использовать ===
,
Сделай это:
function myFunction(){
var uName = document.getElementById("uName").value;
var pWord = document.getElementById("pWord").value;
}
Для перенаправления использовать
window.location = "http://www.location.com/ie.htm";
Хорошо попробуйте этот пример:
function myFunction(){
var uName = document.getElementById("uName").value;
var pWord = document.getElementById("pWord").value;
// This line controls the uName and pWord.
if(uName == "Admin" && pWord == "Admin"){
// This line creates a pop-up with the name.
alert("Welcome " + uName);
// Need a line to redirect to a new page
location.href = "http://www.SOMEURL.com";
// Need a line with the else statement
} else {
// Need a line to say if something if not all fields are filled
alert("Wrong input");
}
}