index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>vanillaJS</title>
</head>
<body>
<div class = "hello">
<h1>Hi1</h1>
</div>
<div class = "hello">
<h2>Hi2</h2>
</div>
<div class = "hello">
<h3>Hi3-1</h3>
</div>
<div class = "hello">
<h3>Hi3-2</h3>
</div>
<script src="app.js"></script>
</body>
</html>
app.js
const title1 = document.querySelector(".hello");
console.log(title1);
const title2 = document.querySelector(".hello h3");
console.log(title2);
const title3 = document.querySelector(".hello:nth-child(4)");
console.log(title3);
실행 결과
⇒ html은 위와 동일
app.js
const title4 = document.querySelectorAll(".hello");
console.log(title4);
const title5 = document.querySelectorAll(".hello:nth-child(4)");
console.log(title5);
실행 결과
document.querySelector(selectors);
CSS 구문을 따르지 않는, 예컨대 콜론이나 공백을 포함한 선택자나 ID를 사용해야 하면 반드시 백슬래시("\
")를 사용해 해당 문자를 이스케이프해야 합니다. 백슬래시는 JavaScript의 이스케이프 문자이기 때문에, 백슬래시를 문자로 입력하려면 반드시 두 번 이스케이프해야 합니다. 한 번은 JavaScript 문자열에 필요하고, 또 다른 한 번은 querySelector()
에 필요합니다.
<div id="foo\bar"></div><div id="foo:bar"></div><script>
console.log("#foo\bar"); // "#fooar" ('\b'는 백스페이스 컨트롤 문자)
document.querySelector("#foo\bar"); // 일치하는 요소 없음
console.log("#foo\\bar"); // "#foo\bar"
console.log("#foo\\\\bar"); // "#foo\\bar"
document.querySelector("#foo\\bar"); // 첫 번째 <div>
document.querySelector("#foo:bar"); // 일치하는 요소 없음
document.querySelector("#foo\\:bar"); // 두 번째 <div>
</script>