min's devlog
[JavaScript] Dom Manipulation(동적 태그 생성) 본문
Dom Manipulation(동적으로 태그 생성하기)
첫번째 방법으론 innerHTML 이 있다.
div1.innerHTML = '<input type="text" size="50">';
두번째 방법은 태그를 직접 조작한다.
(1) 태그 생성
var input = document.createElement('input');
document 객체에 createElement를 선택한다. 이 메소드는 <input>태그 (객체 하나)를 반환한다.
(2) 속성 추가
//input.type = 'text';
//input.size = '50'; //BOM 타입!
var type = document.createAttribute('type'); //type=""
type.value = 'text'; //type="text"
input.setAttributeNode(type); //<input type="text">
DOM을 사용해서 체계적으로 태그 만들기
input.setAttribute('type', 'text');
input.setAttribute('size', 50); //<input type="text" size="50">
div1.appendChild(input); // input을 div의 자식으로
장기간에 지속적으로 관리하기 위해선 innerHTML을 사용하는 것은 좋은 방법은 아니다.
속성과 값을 알아보기도 어렵고 다루기가 어렵기 때문이다.
예시
3 x 3 테이블을 td 이벤트로 만들기
var table = document.createElement('table');
for(var i=0; i<3; i++) {
var tr = document.createElement('tr');
for(var j=0; j<3; j++) {
var td = document.createElement('td');
td.textContent = 'item';
td.addEventListener('mouseenter', f3);
td.addEventListener('mouseleave', f4);
tr.appendChild(td);
}
table.appendChild(tr);
}
table.classList.add('table');
div1.appendChild(table);

appendchild 때문에 만들어둔 버튼을 클릭할 때 마다 테이블이 늘어난다.

'til > Front' 카테고리의 다른 글
[JavaScript] 객체(Object) (0) | 2022.06.13 |
---|---|
[JavaScript] 호이스팅(Hoisting) (0) | 2022.06.13 |
[JavaScript] DOM 트리노드의 프로퍼티 (0) | 2022.06.13 |
[JavaScript] Array (0) | 2022.06.13 |
[JavaScript] Date (0) | 2022.06.11 |