요약 : Javascript 에서 HTML을 제어하기 위한 명령이라고 이해하면 된다.
1) Test
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
href="https://cdn.jsdelivr.net/npm/reset-css@5.0.2/reset.min.css"
rel="stylesheet"
/>
<link href="./CSS/starbucks.css" rel="stylesheet" />
<!-- <script defer src="./JS/starbucks.js"></script> -->
<script>
let boxEl = document.querySelector(".box");
console.log(boxEl);
</script>
<title>Document</title>
</head>
<body>
<div class="box">BOX!!!!</div>
</body>
</html>
1-1) Test 결과
null
참고사항 : null 이란? 개발자가 없는 값을 의미로 넣은 것을 뜻한다.
생각해보면 script 태그에 src 속성을 이용해 스크립트를 연결해서 보여줬는데도 이러한 null이 표시되는 이유가 무엇일까?
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
href="https://cdn.jsdelivr.net/npm/reset-css@5.0.2/reset.min.css"
rel="stylesheet"
/>
<link href="./CSS/starbucks.css" rel="stylesheet" />
<script src="./JS/starbucks.js"></script>
...생략...
<body>
<div class="box">BOX!!!!</div>
</body>
Tip
그러면 저 값을 그대로 출력하고 싶다면 어떻게 해야할까?
1) Head 태그 영역에 defer 사용하기
...생략...
<script defer src="./JS/starbucks.js"></script>
...생략...
2) Body 태그 영역에 script 태그 넣기
...생략...
<body>
<div class="box">BOX!!!!</div>
<script src="./JS/starbucks.js"></script>
</body>
...생략...
결과)
<div class="box">BOX!!!!</div>
// 1. HTML 요소(Element) 1개 검색/찾기
const boxEl = document.querySelector('.box'); // HTML의 box 라는 css 클래스 선택자를 명시함
// 2. HTML 요소에 적용할 수 있는 이벤트 메서드
boxEl.addEventListener();
// 3. 인수(Arguments) 추가
boxEl.addEventListener(1, 2);
// 4. 1 - 이벤트(Event, 상황)
boxEl.addEventListener('click', 2);
// 5. 2 - 핸들러(Handler, 실행할 함수)
boxEl.addEventListener('click', function (){
console.log('Click~');
});
2-1) querySelector
// 버튼 클릭시 이벤트 발생
let boxEl = document.querySelector(".box");
boxEl.addEventListener("click", function () {
// 1. 클래스 정보객체 활용(add)
boxEl.classList.add("active");
console.log(boxEl.classList.contains("active")); // true
// 2. 클래스 정보객체 활용(remove)
boxEl.classList.remove("active");
console.log(boxEl.classList.contains("active")); // false
}
// 3.
2-2) querySelectorAll
// HTML 요소를 전부 검색/찾기
// box 라는 요소를 전부 찾아서 적용
const boxEls = document.querySelectorAll(".box");
console.log(boxEls);
// 찾은 요소들을 반복해서 함수를 실행
// 익명 함수를 인수로 추가
boxEls.forEach(function () {});
// 첫 번째 매개변수(boxEl) : 반복 중인 요소,
// 두 번째 매개변수(boxEls) : 반복 중인 번호
boxEls.forEach(function (boxEl, index) {});
// 출력
boxEls.forEach(function (boxEl, index) {
// order 클래스에 index의 1을 더해서 box 요소에 추가하겠다
boxEl.classList.add(`order-${index + 1}`);
console.log(index, boxEl);
});
2-3) 간단 test
// HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link
href="https://cdn.jsdelivr.net/npm/reset-css@5.0.2/reset.min.css"
rel="stylesheet"
/>
<link href="./CSS/starbucks.css" rel="stylesheet" />
<script defer src="./JS/starbucks.js"></script>
</head>
<body>
<button class="actionButton">클릭해주세요</button>
</body>
</html>
// Javascript
// 버튼 클릭시 이벤트 발생
let boxEl = document.querySelector(".actionButton");
console.log(boxEl);
boxEl.addEventListener("click", function () {
console.log("클릭하셨습니다!");
});
// HTML
...생략...
<body>
<div class="rainbows">red</div>
<div class="rainbows">orange</div>
<div class="rainbows">yellow</div>
<div class="rainbows">green</div>
<div class="rainbows">blue</div>
<div class="rainbows">Indigo</div>
<div class="rainbows">purple</div>
</body>
...생략...
... 경계선 ...
// JS
const boxEls = document.querySelectorAll(".rainbows");
boxEls.forEach(function (boxEls, index) {
boxEls.classList.add(`order-${index + 1}`);
console.log(index, boxEls);
});
결과)
// HTML
...생략...
<body>
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</body>
...생략...
... 경계선 ...
// JS
const boxEl = document.querySeletor('box');
console.log(boxEl.textContent);
boxEl.textContent = "SEONGHO!!";
console.log(boxEl.textContent);
결과)
const boxEl = document.querySelector(".box");
boxEl.classList.add("active");
if (boxEl.classList.contains("active")) {
console.log("포함됨");
}
결과)