안녕하세요 선생님.
동영상 강의가 아니라 개인적인 공부겸 만드는것인데 혹시 문의드려도 괜찮으실까요.
대략적인 틀은 input에서 입력한 값을 받고 그것을 array안에 들어있는 값중 하나만 똑같으면
다음으로 넘어가고, 값이 똑같은게 없으면 경고창 날리는 방식입니다.
그래서 선생님 강의에 있는 array와 for문으로 하면 되겠거니 싶어서 그렇게 짜봤는데,
원하는데로 나오지가 않네요;
특히 조건문에 array의 마지막 값을 강조한 식을 썼는데도 잘 안됩니다.
제 조건문에 무슨 문제가 있나요?
(이미지)
(스크립트)
const loginForm = document.querySelector(".login-form");
const submitButton = document.querySelector(".submit-button");
const accountInput = document.querySelector("#account");
const mapCodeInput = document.querySelector("#mapCode");
let loginAccount = ["aaa", "bbb", "ccc", "ddd", "eee"];
let mapLink = ["map-test.html", "map-test02.html"]
/*
1. input에서 입력한 value값이 위의 array안에 있는 값중 1개라도 일치하다면 addMapLink(); 함수실행.
2. 그 외에 input에서 입력한 value값이 하나도 다 안맞으면 alert 뜸.(마지막에한번만)
문제 1. 첫번째값 ("aaa")는 무조건 잘 되지만,
두번째값부터 ("bbb" ~ "eee") 입력하면 alert가 뜸.
문제 2. else 부분을
else if(!accountInput.value == loginAccount[i]) 이걸로 바꾼 후 위의 array가 아닌
다른 걸로 입력 시 alert가 뜨지 않음.
*/
function loginCheck(){
for (let i = 0; i < loginAccount.length; i++) {
//문제 1
// if (accountInput.value == loginAccount[i]) {
// addMapLink();
// return;
// }else{
// alert('계정이 일치하지 않습니다.');
// return;
// }
//문제 2
if (accountInput.value == loginAccount[i]) {
addMapLink();
return;
}else if(!accountInput.value == loginAccount[loginAccount.length - 1]){
alert('계정이 일치하지 않습니다.');
return;
}
}
}
function addMapLink(){
for (let i = 0; i < mapLink.length; i++) {
if (mapCodeInput.value == mapLink[i]) {
alert(mapCodeInput.value);
return;
}else{
alert('코드가 일치하지 않습니다.');
return;
}
}
}
loginForm.addEventListener("submit", function(event){
event.preventDefault();
loginCheck();
});