Skip to content

Commit 75b777c

Browse files
[요소 검색하기] 번역 보완
1 parent 8030b3c commit 75b777c

File tree

1 file changed

+33
-33
lines changed
  • 2-ui/1-document/04-searching-elements-dom

1 file changed

+33
-33
lines changed

2-ui/1-document/04-searching-elements-dom/article.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
## document.getElementById 혹은 id를 사용해 요소 검색하기
88

9-
요소에 `id` 속성이 있으면 요소의 위치에 상관없이 `document.getElementById(id)`라는 메서드를 이용해 요소에 접근할 수 있습니다.
9+
요소에 `id` 속성이 있으면 위치에 상관없이 메서드 `document.getElementById(id)`이용해 접근할 수 있습니다.
1010

1111
예시:
1212

@@ -26,23 +26,23 @@
2626
</script>
2727
```
2828

29-
요소에 `id` 속성이 있으면 `id` 속성값을 그대로 딴 전역 변수 하나가 만들어지는데, 이를 이용할 수도 있습니다.
29+
이에 더하여 `id` 속성값을 그대로 딴 전역 변수를 이용해 접근할 수도 있습니다.
3030

3131
```html run
3232
<div id="*!*elem*/!*">
3333
<div id="*!*elem-content*/!*">Element</div>
3434
</div>
3535

3636
<script>
37-
// 변수 elem은 id가 "elem"인 DOM 요소를 참조합니다.
37+
// 변수 elem은 id가 'elem'인 요소를 참조합니다.
3838
elem.style.background = 'red';
3939
4040
// id가 elem-content인 요소는 중간에 하이픈(-)이 있기 때문에 변수 이름으로 쓸 수 없습니다.
41-
// 이럴 땐 window['elem-content']같이 대괄호(`[...]`)를 이용할 수 있습니다.
41+
// 이럴 땐 대괄호(`[...]`)를 사용해서 window['elem-content']로 접근하면 됩니다.
4242
</script>
4343
```
4444

45-
그런데 이렇게 자동으로 선언된 전역변수는 동일한 이름을 가진 변수가 선언되면 무용지물이 됩니다.
45+
그런데 이렇게 요소 id를 따서 자동으로 선언된 전역변수는 동일한 이름을 가진 변수가 선언되면 무용지물이 됩니다.
4646

4747
```html run untrusted height=0
4848
<div id="elem"></div>
@@ -55,11 +55,11 @@
5555
```
5656

5757
```warn header="id를 따서 만들어진 전역변수를 요소 접근 시 사용하지 마세요."
58-
`id`에 대응하는 전역변수는 [명세](http://www.whatwg.org/specs/web-apps/current-work/#dom-window-nameditem)의 내용을 구현한 것으로 표준이긴 하지만 하위 호환성을 위해 남겨둔 동작입니다.
58+
`id`에 대응하는 전역변수는 [명세서](http://www.whatwg.org/specs/web-apps/current-work/#dom-window-nameditem)의 내용을 구현해 만들어진 것으로 표준이긴 하지만 하위 호환성을 위해 남겨둔 동작입니다.
5959
60-
브라우저는 스크립트의 네임스페이스와 DOM의 네임스페이스를 함께 사용할 수 있도록 해서 개발자의 편의를 도모합니다. 그런데 이런 방식은 스크립트가 간단할 땐 괜찮지만, 이름이 충돌할 가능성이 있기 때문에 추천하는 방식은 아닙니다. 뷰 영역을 관장하는 HTML을 보지 않은 상황에서 스크립트만 보고 변수의 출처를 알기 힘들다는 단점도 있죠.
60+
브라우저는 스크립트의 네임스페이스와 DOM의 네임스페이스를 함께 사용할 수 있도록 해서 개발자의 편의를 도모합니다. 그런데 이런 방식은 스크립트가 간단할 땐 괜찮지만, 이름이 충돌할 가능성이 있기 때문에 추천하는 방식은 아닙니다. HTML을 보지 않은 상황에서 코드만 보고 변수의 출처를 알기 힘들다는 단점도 있습니다.
6161
62-
본 튜토리얼에선 코드를 간결하게 작성하기 위해 요소의 출처가 명확한 경우, `id`를 사용해 요소에 직접 접근하는 방법을 사용할 예정입니다.
62+
본 튜토리얼에선 간결성을 위해 요소의 출처가 명확한 경우, `id`를 사용해 요소에 직접 접근하는 방법을 사용할 예정입니다.
6363
6464
실무에선 `document.getElementById`를 사용하시길 바랍니다.
6565
```
@@ -78,32 +78,32 @@
7878
7979
`elem.querySelectorAll(css)`은 다재다능한 요소 검색 메서드입니다. 이 메서드는 `elem`의 자식 요소 중 주어진 CSS 선택자에 대응하는 요소 모두를 반환합니다.
8080
81-
아래 예시는 `document` 내 마지막 `<li>`요소 모두를 반환합니다.
81+
아래 예시는 마지막 `<li>`요소 모두를 반환합니다.
8282
8383
```html run
8484
<ul>
85-
<li>The</li>
86-
<li>test</li>
85+
<li>1-1</li>
86+
<li>1-2</li>
8787
</ul>
8888
<ul>
89-
<li>has</li>
90-
<li>passed</li>
89+
<li>2-1</li>
90+
<li>2-2</li>
9191
</ul>
9292
<script>
9393
*!*
9494
let elements = document.querySelectorAll('ul > li:last-child');
9595
*/!*
9696
9797
for (let elem of elements) {
98-
alert(elem.innerHTML); // "test", "passed"
98+
alert(elem.innerHTML); // "1-2", "2-2"
9999
}
100100
</script>
101101
```
102102

103103
`querySelectorAll`은 CSS 선택자를 활용할 수 있다는 점에서 아주 유용합니다.
104104

105105
```smart header="가상 클래스도 사용할 수 있습니다."
106-
querySelectorAll에는 `:hover`나 `:active` 같은 CSS 선택자의 가상 클래스(pseudo-class)도 사용할 수 있습니다. `document.querySelectorAll(':hover')`을 사용하면 마우스 포인터가 위에 있는(hover 상태인) 요소 모두를 담은 컬렉션이 반환됩니다. 참고: 컬렉션은 DOM 트리 최상단에 위치한 `<html>`부터 가장 하단의 요소 순으로 채워집니다.
106+
querySelectorAll에는 `:hover`나 `:active` 같은 CSS 선택자의 가상 클래스(pseudo-class)도 사용할 수 있습니다. `document.querySelectorAll(':hover')`을 사용하면 마우스 포인터가 위에 있는(hover 상태인) 요소 모두를 담은 컬렉션이 반환됩니다. 이때 컬렉션은 DOM 트리 최상단에 위치한 `<html>`부터 가장 하단의 요소 순으로 채워집니다.
107107
```
108108

109109
## querySelector [#querySelector]
@@ -140,9 +140,9 @@ querySelectorAll에는 `:hover`나 `:active` 같은 CSS 선택자의 가상 클
140140

141141
## closest
142142

143-
부모 요소, 부모 요소의 부모 요소 등 DOM 트리에서 특정 요소의 상위에 있는 요소들을 한데 묶어 해당 요소의 *조상* 요소라고 부릅니다.
143+
부모 요소, 부모 요소의 부모 요소 등 DOM 트리에서 특정 요소의 상위에 있는 요소들은 *조상(ancestor)* 요소라고 합니다.
144144

145-
`elem.closest(css)`메서드는 `elem` 자기 자신을 포함하여 CSS 선택자와 일치하는 가장 가까운 조상 요소를 찾을 수 있게 도와줍니다.
145+
메서드 `elem.closest(css)` `elem` 자기 자신을 포함하여 CSS 선택자와 일치하는 가장 가까운 조상 요소를 찾을 수 있게 도와줍니다.
146146

147147
`closest`메서드는 해당 요소부터 시작해 DOM 트리를 한 단계씩 거슬러 올라가면서 원하는 요소를 찾습니다. CSS 선택자와 일치하는 요소를 찾으면, 검색을 중단하고 해당 요소를 반환합니다.
148148

@@ -176,7 +176,7 @@ querySelectorAll에는 `:hover`나 `:active` 같은 CSS 선택자의 가상 클
176176

177177
튜토리얼의 완성도를 높이고 오래된 스크립트에서 해당 메서드들을 만날 때 당황하지 않으시길 바라면서 이 메서드들을 잠시 언급하도록 하겠습니다.
178178

179-
- `elem.getElementsByTagName(tag)` -- 주어진 태그에 해당하는 요소를 찾고, 대응하는 요소를 담은 컬렉션을 반환합니다. 매개변수 `tag``"*"`이 들어가면, "모든 태그"가 검색됩니다.
179+
- `elem.getElementsByTagName(tag)` -- 주어진 태그에 해당하는 요소를 찾고, 대응하는 요소를 담은 컬렉션을 반환합니다. 매개변수 `tag``"*"`이 들어가면, '모든 태그'가 검색됩니다.
180180
- `elem.getElementsByClassName(className)` -- class 속성값을 기준으로 요소를 찾고, 대응하는 요소를 담은 컬렉션을 반환합니다.
181181
- `document.getElementsByName(name)` -- 아주 드물게 쓰이는 메서드로, 문서 전체를 대상으로 검색을 수행합니다. 검색 기준은 `name` 속성값이고, 이 메서드 역시 검색 결과를 담은 컬렉션을 반환합니다.
182182

@@ -218,10 +218,10 @@ let divs = document.getElementsByTagName('div');
218218
</script>
219219
```
220220

221-
```warn header="`\"s\"`를 절대 빠트리지 마세요!"
222-
초보 개발자들은 가끔 `"s"`를 빼먹는 실수를 하곤 합니다. <code>getElement<b>s</b>ByTagName</code>를 써야 하는데 `"s"`를 빠트리고 `getElementByTagName`을 입력하곤 하죠.
221+
```warn header="`'s'`를 절대 빠트리지 마세요!"
222+
초보 개발자들은 가끔 `'s'`를 빼먹는 실수를 하곤 합니다. <code>getElement<b>s</b>ByTagName</code>를 써야 하는데 `getElementByTagName`을 입력하곤 하죠.
223223

224-
`getElementById`는 요소 하나만을 반환하기 때문에 `"s"`가 없습니다. `getElementsByTagName`등의 메서드는 대응하는 요소를 담은 컬렉션을 반환하기 때문에 메서드 중간에 `"s"`가 들어갑니다.
224+
`getElementById`는 요소 하나만을 반환하기 때문에 `s`가 없습니다. `getElementsByTagName` 등의 메서드는 대응하는 요소를 담은 컬렉션을 반환하기 때문에 메서드 중간에 `"s"`가 들어갑니다.
225225
```
226226
227227
````warn header="요소 하나가 아닌, 컬렉션을 반환합니다!"
@@ -232,9 +232,9 @@ let divs = document.getElementsByTagName('div');
232232
document.getElementsByTagName('input').value = 5;
233233
```
234234

235-
위 코드는 input 요소 전체를 담은 *컬렉션*에 5를 할당하려 하므로, 동작하지 않습니다. 본래 의도는 컬렉션이 아닌 요소에 값을 할당하는 것이었죠.
235+
input 요소 전체를 담은 *컬렉션*에 5를 할당하는 위 코드는 동작하지 않습니다. 아마도 본래 의도는 컬렉션 내 요소에 값을 할당하는 것이었을 겁니다.
236236

237-
컬렉션을 순회하거나 인덱스를 사용해 컬렉션이 아닌 요소를 얻고, 그 요소에 값을 할당하면 기존 의도대로 동작합니다. 아래와 같이 말이죠.
237+
컬렉션을 순회하거나 인덱스를 사용해 요소를 얻고 그 요소에 값을 할당하면 기존 의도대로 동작합니다. 아래와 같이 말이죠.
238238

239239
```js
240240
// (문서에 input 요소가 있다면) 아래 코드는 잘 동작합니다.
@@ -251,22 +251,22 @@ document.getElementsByTagName('input')[0].value = 5;
251251
</form>
252252
253253
<script>
254-
// name 속성을 이용해 봅시다.
254+
// name 속성을 이용해 검색
255255
let form = document.getElementsByName('my-form')[0];
256256
257-
// 클래스 이름을 이용해 봅시다.
257+
// fomr 내에서 클래스 이름을 이용해 검색
258258
let articles = form.getElementsByClassName('article');
259-
alert(articles.length); // 클래스 속성값이 "article"인 요소는 2개입니다.
259+
alert(articles.length); // 2. 클래스 속성값이 'article'인 요소는 2개입니다.
260260
</script>
261261
```
262262
263263
## 살아있는 컬렉션
264264
265-
`"getElementsBy"`로 시작하는 모든 메서드는 *살아있는* 컬렉션을 반환합니다. 문서에 변경이 있을 때마다 컬렉션을 "자동 갱신"해줘 최신 상태를 반영할 수 있게 해주죠.
265+
`'getElementsBy'`로 시작하는 모든 메서드는 *살아있는* 컬렉션을 반환합니다. 문서에 변경이 있을 때마다 컬렉션이 '자동 갱신'되어 최신 상태를 유지합니다.
266266
267-
아래 예제엔 스크립트 두 개가 있습니다.
267+
예시 내엔 스크립트 두 개가 있습니다.
268268
269-
1. 첫 번째 스크립트는 `<div>`에 상응하는 요소를 담은 컬렉션에 대한 참조를 만듭니다. 스크립트가 실행되는 시점에 이 컬렉션의 길이는 `1`입니다.
269+
1. 첫 번째 스크립트는 `<div>`에 상응하는 요소를 담은 컬렉션에 대한 참조를 만듭니다. 스크립트가 실행되는 시점에 이 컬렉션의 길이는 `1`입니다.
270270
2. 두 번째 스크립트는 문서에 `<div>`가 하나 더 추가된 이후에 실행됩니다. 따라서 컬렉션의 길이는 `2`가 됩니다.
271271
272272
```html run
@@ -286,9 +286,9 @@ document.getElementsByTagName('input')[0].value = 5;
286286
</script>
287287
```
288288
289-
반면, `querySelectorAll`은 *정적인* 컬렉션을 반환합니다. 요소를 담은 공간인 컬렉션이 한 번 확정되면 더는 늘어나지 않습니다.
289+
반면, `querySelectorAll`은 *정적인* 컬렉션을 반환합니다. 컬렉션이 한 번 확정되면 더는 늘어나지 않습니다.
290290
291-
이 메서드를 사용하면 아래에서 보시는 바와 같이 두 스크립트가 동일하게 `1`을 출력합니다.
291+
`querySelectorAll`을 사용하면 두 스크립트가 동일하게 `1`을 출력합니다.
292292
293293
294294
```html run
@@ -312,15 +312,15 @@ document.getElementsByTagName('input')[0].value = 5;
312312
313313
## 요약
314314
315-
아래 6가지 메서드는 DOM에서 원하는 노드를 찾을 수 있게 도와줍니다.
315+
DOM에서 원하는 노드를 검색하게 해주는 주요 메서드 6가지는 다음과 같습니다.
316316
317317
<table>
318318
<thead>
319319
<tr>
320320
<td>메서드</td>
321321
<td>검색 기준</td>
322322
<td>호출 대상이 요소가 될 수 있는지에 대한 여부</td>
323-
<td>컬렉션 갱신 가능 여부</td>
323+
<td>컬렉션 갱신 여부</td>
324324
</tr>
325325
</thead>
326326
<tbody>

0 commit comments

Comments
 (0)