만들 것
분기처리 기능
html
<form id="form">
<input type="text" id="msg">
<button type="submit" id="btn">입력</button>
</form>
<h1 class="feedback">Input 값을 입력하세요</h1>
<h2 id="txt">입력된 텍스트가 출력되는 영역</h2>
css
show : block 해놓고 만약에 아무런 글자를 입력하지않은 상태에 입력을 누르면 feedback이라는 영역에 show라는 클래스가 들어가게 해줄거임
2초정도 시간이 지나면 자동으로 show라고 하는 클래스가 영역에서 삭제가 되면서 경고 문구가 사라지게 만드는 기능
.feedback {
display: none;
color: red;
}
.show {
display: block;
}
id, class 가져오기
자바스크립트에서 css처럼 클래스를 접근할 수 있다
queryselector 태그로 접근하면 id는 #태그명, class는 .태그명
var form = document.getElementById('form');
var input = document.getElementById('msg');
var feedback = document.querySelector('.feedback');
var txt = document.getElementById('txt');
버튼 클릭 이벤트
form.addEventListener('submit', function(e) {
console.log('제출');
})
버튼을 눌러보면 제출이 뜨지만 금방 사라진다
태그 고유기능 막기
두번째 인수로 전달한 함수에다가 e라는 매개변수를 작성
preventDefault (기본값을 막는다) 사용
form.addEventListener('submit', function(e) {
e.preventDefault();
console.log('제출');
})
![](https://velog.velcdn.com/images%2Fwoosungkim0123%2Fpost%2F60b08141-1693-4357-8fab-f869bab68da3%2F%EC%A0%9C%EC%B6%9C.JPG)
e를 이벤트객체라고 하는데 콘솔로그로 e를 찍어보면
![](https://velog.velcdn.com/images%2Fwoosungkim0123%2Fpost%2Fead169e3-a7e5-4939-abce-a8cf3b23fee9%2F%E3%84%B7.JPG)
그중에서 우리는 preventdefault라는 메서드를 가져다 사용한것
가져오는 방법에는 두가지가 있다
첫번째는 기존과 마찬가지로 id로 불러와서 변수에 넣는 방법
var msg = document.getElementById('msg').value;
var msg = input.value;
두가지 모두 같은 결과
클릭을 할때마다 매번 msg안에 있는 값을 가져오게된다
form.addEventListener('submit', function(e) {
e.preventDefault();
var msg = input.value;
})
![](https://velog.velcdn.com/images%2Fwoosungkim0123%2Fpost%2Fab6ce891-2997-4bfc-aa46-d1ee5261a89c%2Fmsg%EC%95%88.JPG)
분기처리
msg가 값이 있으면 if문 중갈호 실행, 값이 없으면 else문이 실행
if문 중갈호안에 textcontent를 사용하면 글자가 노출된다
form.addEventListener('submit', function(e) {
e.preventDefault();
var msg = input.value;
if(msg) {
txt.textContent = msg;
} else {
}
})
![](https://velog.velcdn.com/images%2Fwoosungkim0123%2Fpost%2F31d423a4-4cd3-4782-b63a-5f85fd5ac635%2F%EC%B0%B8%EC%8B%A4%ED%96%89.JPG)
입력버튼을 누를때 입력값을 초기화 시키려면? reset 사용
입력을 누르면 입력된 값이 사라짐
form.addEventListener('submit', function(e) {
e.preventDefault();
var msg = input.value;
if(msg) {
txt.textContent = msg;
form.reset();
} else {
}
})
에러문구
클래스를 추가하는 방식 사용
특정영역에 클래스를 추가할 때는 classlist property를 사용
class가 feeback 하나밖에 없는데 show라는 클래스가 추가되면서 에러문구가 출력됨
feedback.classList.add('show');
![](https://velog.velcdn.com/images%2Fwoosungkim0123%2Fpost%2Fb360b533-bfbc-4c19-8ac6-b9181d2e2f35%2Fshow%EC%B6%9C%EB%A0%A5.JPG)
일정시간 지나면 에러문구 사라지게하기
일정시간 후 show라는 클래스가 사라지게 하면된다
자바스크립트에서 기본적으로 제공하는 setTimeout이라는 메서드를 사용
두가지의 인수를 가지는데 첫번째는 익명함수(콜백함수), 두번째는 시간
최초상태에서는 글자가 나오지않다가 2초후에 나옴
setTimeout(function() {
console.log("2초 후에 실행")
}, 2000);
![](https://velog.velcdn.com/images%2Fwoosungkim0123%2Fpost%2F9f30a3c4-9386-4a4d-bf95-f79abe510075%2F2%EC%B4%88%ED%9B%84%EC%8B%A4%ED%96%89.JPG)
setTimeout을 이용해 일정시간 지나면 show 클래스가 사라지게 하기
두번째 인수로 2000이라는 시간을 넣으면 2초가 되었을 때 첫번째 인수로 전달한 함수가 자동으로 호출된다
첫번째 인수의 함수 안에 remove.삭제할 클래스 전달
클릭시 show가 나타나게 되고 2초뒤 화면에서 사라짐
form.addEventListener('submit', function(e) {
e.preventDefault();
var msg = input.value;
if(msg) {
txt.textContent = msg;
form.reset();
} else {
feedback.classList.add('show');
setTimeout(function() {
feedback.classList.remove('show');
}, 2000);
}
})