
div 영역에 h1, a, ul 태그를 누적 생성한다.1) 요소를 변수에 저장하는 영역
2) 함수를 제작하는 영역
3) 함수와 태그를 연결하는 영역
React, Vue, Angular 등 프레임워크는 값이 바뀌면 자동 렌더링되지만,
순수 JavaScript에서는innerHTML,innerText등을 직접 수정해 반영해야 한다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>태그 생성 실습</title>
</head>
<body>
<h1 id="text">클릭해서 태그를 누적 생성</h1>
<button id="btn_h1">h1태그 생성</button>
<button id="btn_a">a태그 생성</button>
<button id="btn_ul">ul태그 생성</button>
<div id="content"></div>
<script>
let div = document.getElementById("content");
let btn_h1 = document.getElementById("btn_h1");
let btn_a = document.getElementById("btn_a");
let btn_ul = document.getElementById("btn_ul");
const h1 = () => {
div.innerHTML += "<h1>h1태그 생성</h1>";
}
const a = () => {
div.innerHTML += "<a href='#'>a태그 생성</a>";
}
const ul = () => {
div.innerHTML += `
<ul>
<li>HTML</li>
<li>CSS</li>
</ul>`;
}
btn_h1.addEventListener("click", h1);
btn_a.addEventListener("click", a);
btn_ul.addEventListener("click", ul);
</script>
</body>
</html>
innerHTML +=로 기존 내용 유지한 채 누적 가능+ 버튼 클릭 시 숫자가 1씩 증가- 버튼 클릭 시 숫자가 1씩 감소 (단, 0 미만 불가)innerText, innerHTML → 텍스트 변경value → 입력값 접근type, src, className, style 등 속성 직접 접근/수정 가능<p id="number">0</p>
<button id="btn_plus">+</button>
<button id="btn_minus">-</button>
<script>
const plus = () => {
document.getElementById("number").innerText =
Number(document.getElementById("number").innerText) + 1;
};
const minus = () => {
const current = Number(document.getElementById("number").innerText);
if (current > 0) {
document.getElementById("number").innerText = current - 1;
}
};
document.getElementById("btn_plus").addEventListener("click", plus);
document.getElementById("btn_minus").addEventListener("click", minus);
</script>
text로 전환 → 비밀번호 노출password로 변경비밀번호: <input type="password" id="input">
<button id="btn">비밀번호 보이기</button>
<script>
const change_type = () => {
const input = document.getElementById("input");
input.type = input.type === "password" ? "text" : "password";
}
document.getElementById("btn").addEventListener("click", change_type);
</script>
getElementsByTagName, getElementsByClassName 등으로 가져온 결과는 HTMLCollection (유사 배열)map, filter, push 등은 사용 불가Array.from()을 사용해 배열로 변환 필요<ul>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ul>
<button id="btn">li태그 출력</button>
<script>
const print = () => {
const li = document.getElementsByTagName("li");
for (let i = 0; i < li.length; i++) {
console.log(li[i].innerText);
}
const arr = Array.from(li);
console.log("배열 변환:", arr);
}
document.getElementById("btn").addEventListener("click", print);
</script>