<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. DOM에 내용 그리기</title>
<style>
#elementContainer {
border: 1px solid black;
padding: 5px;
}
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 50px auto;
padding: 20px;
}
.section {
margin: 30px 0;
padding: 20px;
background: #f5f5f5;
border-radius: 5px;
}
input,
textarea {
width: 100%;
padding: 10px;
margin: 10px 0;
box-sizing: border-box;
}
button {
padding: 10px 20px;
margin: 5px;
cursor: pointer;
background: #2196f3;
color: white;
border: none;
border-radius: 5px;
}
button:hover {
background: #0b7dda;
}
#display {
padding: 15px;
margin: 10px 0;
background: white;
border: 1px solid #ddd;
border-radius: 5px;
min-height: 50px;
}
.new-element {
padding: 10px;
margin: 5px 0;
background: #4caf50;
color: white;
border-radius: 5px;
}
</style>
</head>
<body>
<h1>2. DOM에 내용 그리기 (DOM Manipulation)</h1>
<div class="section">
<h2>value 사용 (Form 요소)</h2>
<input type="text" id="myInput" placeholder="입력하세요" />
<button onclick="setValue()">value로 값 설정</button>
<button onclick="getValue()">value 값 가져오기</button>
<p id="inputResult"></p>
</div>
<div class="section">
<h2>textContent</h2>
<button onclick="setTextContent()">textContent 사용</button>
<div id="textDisplay" class="display"></div>
</div>
<div class="section">
<h2>createElement, append, prepend</h2>
<button onclick="createAndAppend()">append로 추가</button>
<button onclick="createAndPrepend()">prepend로 추가</button>
<button onclick="clearElements()">초기화</button>
<div id="elementContainer" class="display"></div>
</div>
<div class="section">
<h2>before, after</h2>
<div
id="target"
style="
padding: 15px;
background: #ff9800;
color: white;
border-radius: 5px;
"
>
타겟 요소
</div>
<button onclick="addBefore()">before로 앞에 추가</button>
<button onclick="addAfter()">after로 뒤에 추가</button>
<button onclick="resetBeforeAfter()">초기화</button>
</div>
<div class="section">
<h2>setAttribute</h2>
<img id="myImage" />
<br /><button onclick="setImageAttr()">setAttribute로 이미지 설정</button>
</div>
<script>
// value 사용
function setValue() {
let dom = document.querySelector("#myInput");
dom.value = "hello";
}
function getValue() {
let dom = document.querySelector("#myInput");
let text = dom.value;
alert(text);
}
// textContent
function setTextContent() {
let dom = document.querySelector("#textDisplay");
dom.textContent = "<h1>Hello</h1>";
}
let num = 1;
// createElement, append, prepend
function createAndAppend() {
let dom = document.querySelector("#elementContainer");
let item = document.createElement("h1");
item.innerHTML = "Append " + num;
dom.append(item);
num++;
}
function createAndPrepend() {
let dom = document.querySelector("#elementContainer");
let item = document.createElement("h1");
item.innerHTML = "Prepend " + num;
dom.prepend(item);
num++;
}
function clearElements() {
let dom = document.querySelector("#elementContainer");
dom.innerHTML = "";
}
// before, after
function addBefore() {
let dom = document.querySelector("#target");
let item = document.createElement("h1");
item.innerHTML = "Before " + num;
dom.before(item);
num++;
}
function addAfter() {
let dom = document.querySelector("#target");
let item = document.createElement("h1");
item.innerHTML = "After " + num;
dom.after(item);
num++;
}
function resetBeforeAfter() {
location.reload();
}
// setAttribute
function setImageAttr() {
let dom = document.querySelector("#myImage");
dom.setAttribute(
"src",
"<https://i.pinimg.com/736x/2b/53/aa/2b53aa45b761b66b554cdf52270f0be9.jpg>"
);
dom.setAttribute("width", "100px");
dom.setAttribute("height", "100px");
}
</script>
</body>
</html>