티스토리 뷰
- 이벤트 연결방식
1. html에서 js 연결 (=onclick)
2. js에서 html 연결 (=click)
(eventlistener 방식까지해서 3가지 방식이 있다.)
ex) 이벤트 연결방식 두가지를 사용하여 코드 작성 예시
HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자바스크립트 이벤트</title>
<Style>
#desc{
display: none;
}
</Style>
</head>
<body>
<div id="item">
<img src="image/flower.jpg" alt="">
<button class="over" id="open">상세 설명 보기</button>
<div id="desc" class="detail">
<h4>민들레</h4>
<p>어디서나 매우 흔하게 보이는 잡초로서 바닥에 딱 붙어서 꽃봉오리 하나가 속 올라온다.
톱니 모양의 잎새와 눈에 확 띄는 노란 꽃이 인상적이다.
</p>
<button id="close">상세 설명 닫기</button>
</div>
</div>
<script>
var a = document.querySelector('#close');
a.onclick=function(){
hidedetail();
} //hidedetaul()만 넣으면 반환값만 주고 function()으로 위와같이 넣으면 hidedetail실행
//그렇기때문에 밑에 hidedetail이란 이름을 가진 함수가 있어야 함수명만해서 실행 가능
</script>
</body>
<script src="view.js"></script>
<!-- onload해야 <head>에 사용 가능하다. -->
</html>
JS
document.getElementById('open').addEventListener('click',showdetail);
function showdetail(){
document.querySelector('#desc').style.display="block";
document.querySelector('#open').style.display="none";
}
function hidedetail(){
document.querySelector('#open').style.display="block";
document.querySelector('#desc').style.display="none";
}
결과
이벤트 연결방식 두가지를 사용하여 html과 javascript를 작성하였다.
첫번째 방식으로는 js에서 html(=click)으로 연결하는 방식을 사용하였다.
JS
document.getElementById('open').addEventListener('click',showdetail);
function showdetail(){
document.querySelector('#desc').style.display="block";
document.querySelector('#open').style.display="none";
}
javascript에 작성을 하여 html로 연결하였다.
이때는 주의할 점이 있다.
js를 실행하기 위해 html에 실행하도록 연결시켜줘야하는데
위치에 따라 실행 순서가 다르기 때문에 주의해야한다.
만약 연결하는 명령어인 <script src="view.js"></script> 를 html 문보다 앞에 위치한다면 js가 먼저 실행되어 제대로 실행되지않는다.
그렇기 때문에 코드 위치를 </body> 이후에 작성하거나 window.onload 를 사용하여 정상적으로 실행되도록 한다.
window.onload는 html이 모두 로드 된 후 js가 실행되도록 한다.
두번째 방식으로는 html에서 js 연결 (=onclick) 방식을 사용하였다.
HTML
<script>
var a = document.querySelector('#close');
a.onclick=function(){
hidedetail();
}
</script>
JS
function hidedetail(){
document.querySelector('#open').style.display="block";
document.querySelector('#desc').style.display="none";
}
두번째 방식은 html에서 js 연결하도록 하였다.
이 방식 또한 알아야하는 주의사항이 있다.
위의 코드는 function hidedetai(){} 과 onclick이 각 각 js와 html에 작성되어 있다.
위와 같은 방식을 사용할때는 상관없지만
아래와 같은 방식을 사용할때는 문제가 발생한다.
<script>
var a = document.querySelector('#close');
a.onclick=hidedetail();
</script>
hidedetail()만 작성하면 반환값을 준다.
이와 같은 방식으로 사용할 시 hidedetail()함수가 같은 공간에 있어야 찾아 실행하여 반환값을 줄 수 있는데
만약 위의 방식처럼 JS에 따로 작성할 시 함수를 찾을 수 없어 실행되지 않는다.
문제점을 해결하고자한다면 아래와 같이 한 곳에 hidedetail도 작성되어야 정상적인 실행이 가능하다.
<script>
var a = document.querySelector('#close');
a.onclick=hidedetail();
function hidedetail(){
document.querySelector('#open').style.display="block";
document.querySelector('#desc').style.display="none";
}
</script>
'코딩 > 오류 노트' 카테고리의 다른 글
split & replace (1) | 2023.11.28 |
---|---|
addeventlistener (0) | 2023.11.27 |
[7주 2일차] border사용 (1) | 2023.11.21 |
[7주 2일차] 코드 수정 및 보충 (0) | 2023.11.21 |
[7주 1일차] HTML CSS 코드 수정 (0) | 2023.11.21 |
- Total
- Today
- Yesterday