ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีแสดงรายการอ็อบเจ็กต์ JavaScript เป็นรายการอิลีเมนต์ HTML บนหน้าเว็บ
สมมติว่าคุณมีรายการอ็อบเจ็กต์ JavaScript และต้องการแสดงผลเป็นอิลีเมนต์ HTML ในเบราว์เซอร์ ในตัวอย่างนี้ เรามีรายการออกกำลังกาย แสดงด้วยอ็อบเจ็กต์ลิเทอ럴 JavaScript
อ็อบเจ็กต์ลิเทอ럴 JavaScript:
let exerciseList = [ { name: "Deadlift", }, { name: "Push-up", }, { name: "Pull-up", }, { name: "Squat", }, ];
ข้างต้นคืออาร์เรย์อ็อบเจ็กต์ลิเทอ럴 JavaScript ที่มี 4 อ็อบเจ็กต์ (ออกกำลังกาย) เราต้องการนำอ็อบเจ็กต์เหล่านั้นมาแสดงเป็นรายการในเบราว์เซอร์ เช่นนี้:
- Deadlift
- Pull-up
- Push-up
- Squat
นั่นคือรายการแบบไม่เรียงลำดับ หากคุณตรวจสอบรายการด้านบนใน Chrome DevTools มาร์กอัป HTML สำหรับรายการจะเป็นแบบนี้:
<ul> <li>Deadlift</li> <li>Pull-up</li> <li>Push-up</li> <li>Squat</li> </ul>
การแสดงอาร์เรย์อ็อบเจ็กต์ลิเทอ럴 JavaScript เป็นอิลีเมนต์ HTML
เราต้องทำ 4 ขั้นตอนต่อไปนี้:
- สร้างอิลีเมนต์รายการไม่เรียงลำดับว่างเปล่าด้วย HTML เพื่อเพิ่มรายการออกกำลังกายเข้าไปภายหลัง
- ค้นหาและจับรายการออกกำลังกายทั้งหมดจากอาร์เรย์อ็อบเจ็กต์ลิเทอ럴 JavaScript โดยใช้ลูป
for - ห่อแต่ละอ็อบเจ็กต์ออกกำลังกายด้วยแท็กรายการ (
<li></li>) - แสดงอิลีเมนต์ HTML รายการในเบราว์เซอร์ ภายในอิลีเมนต์รายการไม่เรียงลำดับ (
<ul></ul>) ที่สร้างในขั้นตอน 1
1. สร้างอิลีเมนต์รายการไม่เรียงลำดับว่างเปล่า
เพื่อตั้งค่าอิลีเมนต์รายการไม่เรียงลำดับว่างใน HTML ให้เพิ่มโค้ดต่อไปนี้ใน index.html (หรือหน้าต่าง HTML หากใช้ CodePen):
<ul class="exercise-list"></ul>
ตอนนี้มากำหนดอ้างอิงถึงรายการไม่เรียงลำดับนั้นให้ตัวแปร เพื่อเพิ่มเข้าไปในรายการไม่เรียงลำดับภายหลัง เพิ่มโค้ดต่อไปนี้ที่ด้านบนของไฟล์สคริปต์:
let exerciseList = document.querySelector(".exercise-list");
2. วนลูปผ่านอ็อบเจ็กต์ออกกำลังกาย
เนื่องจากเราจัดการกับอ็อบเจ็กต์ออกกำลังกายแต่ละตัวภายในอาร์เรย์ เราจึงต้องวนลูป (iterate) ผ่านแต่ละออกกำลังกายก่อนจึงจะทำอะไรกับมันได้
เพิ่มโค้ดต่อไปนี้ด้านล่างอ็อบเจ็กต์ JS ของคุณ:
for (let exercise of exerciseList) { console.log(exercise.name); }
ไฟล์สคริปต์ทั้งหมดควรเป็นแบบนี้ตอนนี้:
let exerciseList = document.querySelector(".exercise-list"); let exerciseObjects = [ { name: "Deadlift", }, { name: "Push-up", }, { name: "Pull-up", }, { name: "Squat", }, ]; for (exercise of exerciseObjects) { console.log(exercise.name); }
ตอนนี้ตรวจสอบคอนโซลเบราว์เซอร์ คุณควรเห็นนี้:
ตอนนี้เราเข้าถึงอ็อบเจ็กต์ออกกำลังกายแต่ละตัวได้แล้ว
3. ห่อแต่ละออกกำลังกายในอิลีเมนต์รายการ HTML
ตอนนี้มาห่อรายการออกกำลังกายที่รวบรวมไว้ด้วยแท็กรายการ:
ก่อนอื่น เพิ่มตัวแปรต่อไปนี้ก่อนเริ่มลูป for:
let exerciseItems = "";
ตอนนี้ภายในลูป เพิ่มนี้:
exerciseItems += "<li>" + exercise.name + "</li>";
ตอนนี้ถ้าคุณ console.log(exerciseItems) (นอกและด้านล่างลูป) คอนโซลจะแสดงแต่ละรายการออกกำลังกายห่ออยู่ในอิลีเมนต์รายการ
4. เพิ่มรายการออกกำลังกายเข้าไปในรายการออกกำลังกาย
สุดท้าย เพื่อแสดงรายการออกกำลังกายภายในอิลีเมนต์รายการออกกำลังกาย ให้เพิ่มโค้ดนี้ด้านล่างลูป for:
exerciseList.innerHTML = exerciseItems;
หากคุณทำทุกอย่างถูกต้อง รายการออกกำลังกายแบบไม่เรียงลำดับควรแสดงรายการออกกำลังกายทั้งหมดในหน้าต่างเบราว์เซอร์แล้ว
นี่คือโค้ดทั้งหมดที่เราเขียน เพื่ออ้างอิง:
(function() { let exerciseList = document.querySelector(".exercise-list"); let exerciseObjects = [ { name: "Deadlift", }, { name: "Push-up", }, { name: "Pull-up", }, { name: "Squat", }, ]; let exerciseItems = ""; for (exercise of exerciseObjects) { exerciseItems += "<li>" + exercise.name + "</li>"; } exerciseList.innerHTML = exerciseItems; })();
นี่คือ CodePen พร้อมโค้ดที่ทำงานทั้งหมด