-
지금까지는 페이지 상에
존재하는 요소들을 수정해봤어요
-
만약 페이지에
새로운 요소를 넣고 싶다면요?
-
'innerHTML'로
할 수 있어요
-
여기서 한 것 처럼
태그 안에 문자열을 쓰는거에요
-
약간 지저분해
질수도 있어요
-
특히 태그들이 서로 다른 속성과
스타일과 클래스를 가진다면요
-
그래서 대신에
굉장히 예쁜 방식을 쓸 거에요
-
처음부터 요소를 만들어서
페이지에 넣을 거에요
-
페이지에 고양이 그림을
넣고 싶다고 해봐요
-
왜냐하면
좀 더 필요할 것 같으니까요
-
첫번째 단계는
''요소를 만드는 거에요
-
저걸 만들고
싶어요
-
그럼 이 요소를 넣을
변수를 만들어요
-
'catEl'
-
그 다음에는 이걸 쓸거에요
'document.createElement'
-
그리고 우리가 만드는
태그의 이름을 넣어요
-
'img'
-
이제 브라우저가 이미지 태그를
만들었다고 할 수 있죠
-
여기 어딘가
돌아다니고 있을거에요
-
다음 단계는
경로를 추가하는 거에요
-
그러니까
'catEl.src ='
-
그리고 여기서
경로를 가져와서
-
'alt'를 추가해야해요
좀 더 접근이 용이하게요
-
지금까지 하진 않았지만
'alt'태그를 추가해줘야해요
-
이제 우리가 만든
태그에 'src'가 있고
-
"Photo of cute cat"
이라는 'alt'도 있어요
-
좋아요 이게 지금까지
자바스크립트로 만든 거에요
-
우리가 만든 ''태그는
아직 어딘가 돌아다니고 있어요
-
왜냐하면 브라우저에게 이걸
어디 놓을지 지정하지 않았으니까요
-
그리고 DOM에는 이걸
넣을 수 있는 곳들이 아주 많아요
-
가장 쉬운
방법으로 해보죠
-
페이지 하단에
보이게 하는거에요
-
이건 태그의
뒤에 붙여주면 될거에요
-
그러니까
'document.body.appendChild(catEl);'
-
하하
저기 있네요!
-
게다가
꽤 크기까지 해요
-
정말 큰 고양이네요
무서워라
-
여러분은 'appendChild'를
아무 DOM에다가 붙일 수 있어요
-
그럼 그 DOM의
마지막에 이 요소를 붙일 거에요
-
이걸 보면 DOM을
트리 형태로 생각할 수 있어요
-
태그가
트리의 노드이고
-
거기에 여러 자식 노드가 있어요
이나 처럼요
-
여러분은 이 자식 노드 다음에
다른 자식 노드를 더하는 거에요
-
그러니까 그건 여기있는
태그 다음에 올 거에요
-
DOM방식을 사용하면
이론적으로는
-
DOM트리 안의 어디든
요소들을 붙일 수 있어요
-
우리는 가장 쉽고
가장 뻔한 곳에 넣었어요
-
좋아요
하나 더 해봐요
-
여기에는 'innerHTML'을 써서
안에 태그를 썼어요
-
대신에
'createElement'를 쓸 수 있어요
-
그러니까 'var strongEl =
document.createElement("strong");'
-
철자가 틀렸는데
철자는 매우 중요해요
-
비어있는 태그를
어딘가 떠다니게 만들었어요
-
첫번째로 할 것은
텍스트를 지정하는 거에요
-
그러니까
'strongEl.textContent = "cat";'
-
그렇죠?
-
대신에 우리는
다른 걸로도 할 수 있어요
-
'textNode'라는 걸
만들어서 말이죠
-
DOM트리의 여러 DOM노드는
특별한 노드를 가질 수 있어요
-
'textNode'를
그들의 자식으로 말이죠
-
이 노드들은 요소는 아니지만
DOM트리의 노드에요
-
이걸 '잎 노드'라고
불러요
-
왜냐하면 트리의
마지막에 오는 노드니까요
-
그러니까 'var stongText =
document.createTextNode('
-
여기다 텍스트를 넣을게요
"cat"
-
이 방법을
쓰게 된다면
-
이제 돌아다니는
두 개의 노드를 만든 거에요
-
태그와
-
"cat"을 담은
'textNode'죠
-
이걸 서로
연결시켜줘야 해요
-
이
"cat"의 부모가 돼야해요
-
그러면 이렇게
'strongEl.appendChild(strongText);'
-
좋아요 이제
안에 "cat"이 있어요
-
이걸 원하는 곳에 넣어야해요
아직 떠다니고 있으니까요
-
우리는 'nameEls'의
'for'문안에 있고
-
각 'nameEl'에다가
태그를 붙이고 싶어요
-
그럼 여기
'nameEls[i].appendChild(strongEl);'
-
이제 두 개를 볼 수 있네요
저번 것이 아직 있기 때문이죠
-
그러니까 태그에
이 있는데 또 붙어있어요
-
이 부분은 'innerHTML'에
빈 문자열을 넣으면 돼요
-
이게 붙은 안을
지워줄거에요
-
지금 봤듯이 이건 'innerHTML'보다
훨씬 더 많은 코드를 써야해요
-
그러면
왜 이렇게 하는 걸까요?
-
많은 개발자들은 이런 방식으로
수정하는 걸 좋아하지 않아요
-
왜냐하면 코드를
더 많이 써야하니까요
-
보통 개발자들은
jQuery같은 라이브러리를 써요
-
그들이 DOM을
수정할 때요
-
개발자로서는 코드를 덜 쓰고도
같은 기능을 만들 수 있게 돼요
-
왜냐하면 대신에
라이브러리 함수를 쓰니까요
-
저는 이런 식으로
코드를 쓰는 걸 좋아해요
-
어떻게 DOM트리를
수정하는지 볼 수 있으니까요
-
한번에
하나씩 말이죠
-
그리고
더 깔끔해 보여요
-
innerHTML안에 문자열로
다 집어넣는 것보다 말이죠
-
하지만 여러분은
싫어할 수도 있어요
-
어떤 방법으로든 이제 여러분은
이런 게 있다는 걸 알아요
-
만약 여러분이 필요하다면
사용할 수 있고
-
jQuery같은 라이브러리가
뒤에서 뭘 하는지 알 수 있어요