티스토리 뷰
[Javascript] jQuery 'append()'를 순수 자바스크립트로 작성해보자 -jQuery append() in Pure Javascript
AlgoRoot 2022. 1. 17. 16:41
애플 코딩님의 강의를 듣고 있는데 이 강사님은 jQuery로 작성법을 알려주실 때가 많다.
순수 Javascript를 알고 싶은 나는 강사님이 jQuery로 작성하시면 강의를 잠시 멈추고 Javascript 작성법으로 최대한 찾아 적어놓는다.
덕분에 강의듣는 시간은 느려지긴 했지만, 이 과정이 꼭 필요하다고 생각했다. 재밌기도 하고..
이번에는 HTML를 자바스크립트에서 동적으로 생성하는 것을 배웠다.
만약 아래의 HTML 코드에서 주석 처리된 부분을 순수 자바스크립트를 사용해 추가시키고 싶다면 어떻게 해야 할까?
<form class="container">
<div class="form-group">
<p>상품선택</p>
<select class="form-control" id="option1">
<option>모자</option>
<option>셔츠</option>
</select>
<div class="size-select">
<p> Select the size </p>
<select class="form-control" id="option2">
<!-- <option>95</option>
<option>100</option>
<option>105</option> -->
</select>
</div>
</div>
</form>
1. jQuery 작성법
강사님이 알려주신 jQuery로 작성하면 간단하다.
template라는 변수를 만들어 넣을 html 코드를 넣고 append() 또는. html()를 이용해
원하는 곳에 코드를 넣을 수 있다.
<script>
let template = `
<option>95</option>
<option>100</option>
<option>105</option>
`;
$('#option2').append(template);
</script>
1. Javascript 작성법
그렇다면 순수 자바스크립트(javascript)로는 어떻게 할까?
구글링 안 해보고 해 보고, 찾아보고도 해봤는데 꽤 오래 찾고 시도해봤다.
'순수 자바스크립트로는 구현하기 어려운 건가?'라는 생각이 들 때 즈음 순수 자바스크립트 버전을 찾았다.
필자의 경우 셔츠를 선택했을 때 나타나야 했기 때문에 if 문을 썼지만, 주요 코드만 정리하면 아래와 같다.
<script>
let element = document.querySelector('#option2');
let template = `
<option>95</option>
<option>100</option>
<option>105</option> `;
element.insertAdjacentHTML('beforeend', template);
</script>
처음에는 변수를 document.createElement()로 지정해 appendChild로 요소를 추가해서 했는데 오류가 났다.
찾아보니 이러한 이유가 있었다.
appandChlid라는 Method는
- HTML string은 추가할 수 없다.
- 한 번에 하나의 DOM 요소만 추가할 수 있다.
이 것만 사용해서도 내가 원하는 걸 구현할 수 있지만, 정말 번거로운 과정이 동반된다.
나처럼 <div> 안에 자식 요소가 있는 경우 모든 요소에 대해 프로세스를 반복해야 한다.
하지만,insertAdjacentHTML()를 사용하면 append()만큼이나 쉽게 구현할 수 있다.
element.insertAdjacentHTML("beforeend", "html string")
이렇게 ("position", "html string")이라는 두 개의 매개변수가 필요하고 요소에 들어갈 위치로는
네 개의 포지션이 있다. [ beforebegin / afterend / afterbegin / beforeend]
> 포지션에 대한 설명은 하단 레퍼런스 링크 참조
일반적인 추가일 경우 beforeend를 쓰면 된다.
필자의 경우 추가할 html string을 template라는 변수로 정의했기에 위처럼 입력이 가능했다.
Reference : https://usefulangle.com/post/143/pure-javascript-append
'Frontend > JavaScript' 카테고리의 다른 글
[JavaScript] class와 callback 이해하기 (0) | 2022.02.02 |
---|---|
[Javascript] Array, for, forEach 이용해 문제풀기 (출석부, 구구단, 12월실적 구하기) (0) | 2022.01.18 |
[Javascript] 모던 자바스크립트 deep dive 책을 구매하다. (1) | 2022.01.16 |
[Javascript] 369 게임 , 배수를 찾아라 그리고 길들이려는 나만의 습관 (0) | 2022.01.13 |
[Javascript] Javascript 너무어려워요 & 앞으로 공부방향 (7) | 2022.01.11 |
- Total
- Today
- Yesterday
- GIT
- React Query
- 프로그래머스 자바스크립트
- React
- 자바스크립트 비동기 처리
- cs50
- 네트워크
- 타입스크립트
- css
- 프로그래머스
- 백준
- 클로저
- 리액트네이티브
- 모두를 위한 컴퓨터 과학
- 무한스크롤
- 자바스크립트알고리즘
- 프로그래머스 베스트앨범 자바스크립트
- html
- 리액트
- javascript
- python
- network
- 자바스크립트 클로저
- 알고리즘자바스크립트
- 항해99
- 실전프로젝트
- github
- reactquery
- 모두를위한컴퓨터과학
- 자바스크립트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |