เมธอด createElement
เมธอด createElement ช่วยให้สามารถสร้าง
องค์ประกอบใหม่ได้ โดยการส่งชื่อแท็กเป็นพารามิเตอร์
หลังจากการสร้างแล้ว สามารถทำงานกับองค์ประกอบนั้นได้
เหมือนกับองค์ประกอบทั่วไป และยังสามารถเพิ่มลงในหน้าเว็บได้
ด้วยเมธอด prepend,
append,
appendChild,
insertBefore
หรือ insertAdjacentElement
หากบันทึกผลลัพธ์จากการทำงานของ createElement
ลงในตัวแปร ตัวแปรนั้นจะเก็บองค์ประกอบดังกล่าว
เหมือนกับว่าเราได้รับมันมา
ผ่าน querySelector
หรือ getElementById
ข้อแตกต่างเพียงอย่างเดียวคือ องค์ประกอบของเราจะยังไม่ถูก
วางบนหน้าเว็บ ส่วนอื่นๆ เราสามารถเปลี่ยน
innerHTML แอตทริบิวต์ ผูกตัวจัดการเหตุการณ์ (event handlers)
และในที่สุดก็วางมันบน
หน้าเว็บได้
ไวยากรณ์
document.createElement('ชื่อแท็ก');
ตัวอย่าง
มาสร้างย่อหน้า ตั้งข้อความให้มัน
และวางบนหน้าเว็บที่ส่วนท้ายของบล็อก #parent กัน:
<div id="parent">
<p>1</p>
<p>2</p>
<p>3</p>
</div>
let parent = document.querySelector('#parent');
let p = document.createElement('p');
p.textContent = '!';
parent.appendChild(p);
ผลลัพธ์จากการทำงานของโค้ด:
<div id="parent">
<p>1</p>
<p>2</p>
<p>3</p>
<p>!</p>
</div>
ตัวอย่าง
มี ul
มาใส่ 9 แท็ก li ลงไปในนั้นกัน
โดยทำให้ข้อความของมันเป็นหมายเลขลำดับ:
<ul id="parent"></ul>
let parent = document.querySelector('#parent');
for (let i = 1; i <= 9; i++) {
let li = document.createElement('li');
li.textContent = i;
parent.appendChild(li);
}
ผลลัพธ์จากการทำงานของโค้ด:
<ul id="parent">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
ตัวอย่าง
มาเชื่อมตัวจัดการเหตุการณ์ (event handlers) กับองค์ประกอบขณะที่แทรกกัน:
<ul id="parent"></ul>
let parent = document.querySelector('#parent');
for (let i = 1; i <= 9; i++) {
let li = document.createElement('li');
li.textContent = i;
li.addEventListener('click', function() {
alert(this.textContent);
});
parent.appendChild(li);
};
:
ดูเพิ่มเติม
-
เมธอด
cloneNode,
ซึ่งสามารถใช้ในการโคลนองค์ประกอบได้ -
เมธอด
createTextNode,
ซึ่งสามารถใช้ในการสร้างโหนดข้อความใหม่ได้