document.addEventeListener('DOMContentLoaded', () => {})
는 "document 라는 문서 객체의 DOMContentLoaded 이벤트가 발생했을 때, 매개변수로 지정한 콜백 함수를 실행해라"라는 의미입니다.document.body, document.head, document.title
과 같이 문서 객체를 가져올 수 있고, document.querySelector(선택자), document.querySelectorAll(선택자)
로 우리가 만든 다른 요소들에 접근이 가능합니다.div.style.height = `10px`
div.style.color = `black`
document.createElement()
를 사용할 수 있고, 부모_객체.appendChild()
메서드를 통해 부모 객체 아래에 자식 객체를 추가 가능합니다.부모_객체.removeChild(자식_객체)
로 제거할 수 있으며, appendChild() 등으로 부모 객체와 이미 연결이 완료된 문서 객체의 경우 parentNode 속성으로 부모 객체에 접근하여 문서_객체.parentNode.removeChild(문서_객체)
로 제거할 수 있습니다.const listener = (event) => {
const length = event.currentTarget.value.length
h1.textContent = `글자 수: ${length}`
}
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.querySelector('textarea')
const h1 = document.querySelector('h1')
textarea.addEventListener('keyup', listener)
})
const listener = function (event) {
const length = this.value.length
h1.textContent = `글자 수: ${length}`
}
document.addEventListener('DOMContentLoaded', () => {
const textarea = document.querySelector('textarea')
const h1 = document.querySelector('h1')
textarea.addEventListener('keyup', listener)
})
try {
// 예외가 발생할 가능성이 있는 코드
} catch () {
// 예외가 발생했을 때 실행할 코드
} finally {
// 무조건 실행할 코드 (필요한 경우에만 사용)
}
// 단순하게 예외를 발생시킴.
throw 문자열
// 조금 더 자세하게 예외를 발생시킴.
throw new Error(문자열)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
document.addEventListener('DOMContentLoaded', () => {
const rects = document.querySelectorAll('.rect')
rects.forEach((rect, index) => {
const width = (index + 1) * 100
const src = `http://placekitten.com/${width}/250`
// rect.setAttribute('src', src)
rect.src = src
})
})
</script>
</head>
<body>
<img class="rect">
<img class="rect">
<img class="rect">
<img class="rect">
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>할 일 목록</h1>
<input id="todo">
<button id="add-button">추가하기</button>
<div id="todo-list">
</div>
</body>
<script>
document.addEventListener('DOMContentLoaded', () => {
// 문서 객체를 가져옴.
const input = document.querySelector('#todo')
const todoList = document.querySelector('#todo-list')
const addButton = document.querySelector('#add-button')
// 변수 선언
let keyCount = 0 // 이후에 removeTodo() 함수에서 문서 객체를 쉽게 제거하기 위한 용도로 만든 변수.
// 함수 선언
const addTodo = () => {
// 입력 양식에 내용이 없으면 추가하지 않음.
if (input.value.trim() === '') {
alert('할 일을 입력해주세요.')
return
}
// 문서 객체를 설정함.
const item = document.createElement('div')
const checkbox = document.createElement('input')
const text = document.createElement('span')
const button = document.createElement('button')
// 문서 객체를 식별할 키를 생성함.
const key = keyCount
keyCount += 1 // 이후에 removeTodo() 함수에서 문서 객체를 쉽게 제거하기 위한 용도로 만든 변수.
// item 객체를 조작하고 추가함.
/**
* <div data-key="숫자">
* <input>
* <span></span>
* <button></button>
* </div> 형태를 구성
*/
item.setAttribute('data-key', key)
item.appendChild(checkbox)
item.appendChild(text)
item.appendChild(button)
todoList.appendChild(item)
// checkbox 객체를 조작함.
checkbox.type = 'checkbox' // <input type="checkbox"> 형태를 구성함.
checkbox.addEventListener('change', (event) => {
item.style.textDecoration
= event.target.checked ? 'line-through' : ''
}) // 체크박스를 클릭하면 선을 그어줌.
// text 객체를 조작함.
text.textContent = input.value // <span>글자</span> 형태를 구성함.
// button 객체를 조작함.
button.textContent = '제거하기'
button.addEventListener('click', () => {
removeTodo(key)
})
// 입력 양식의 내용을 비움.
input.value = ''
}
const removeTodo = (key) => {
// 식별 키로 문서 객체를 제거함.
const item = document.querySelector(`[data-key="${key}"`)
todoList.removeChild(item)
}
// 이벤트 연결
addButton.addEventListener('click', addTodo)
input.addEventListener('keyup', (event) => {
// 입력 양식에서 Enter 키를 누르면 바로 addTodo() 함수를 호출함.
const ENTER = 13
if (event.keyCode === ENTER) {
addTodo()
}
})
})
</script>
</html>
좋은 글 감사합니다. 자주 방문할게요 :)