คุณสามารถทำได้ดังนี้:
var list = document.getElementById("foo").getElementsByClassName("bar");
if (list && list.length > 0) {
list[0].innerHTML = "Goodbye world!";
}
หรือหากคุณต้องการดำเนินการโดยมีการตรวจสอบข้อผิดพลาดน้อยลงและมีความกะทัดรัดมากขึ้นก็สามารถทำได้ในบรรทัดเดียวดังนี้:
document.getElementById("foo").getElementsByClassName("bar")[0].innerHTML = "Goodbye world!";
ในคำอธิบาย:
id="foo"
คุณจะได้รับองค์ประกอบด้วย
class="bar"
แล้วคุณจะพบวัตถุที่มีอยู่ภายในวัตถุที่มี
- ที่ส่งคืน nodeList ที่เหมือนอาร์เรย์ดังนั้นคุณจึงอ้างอิงรายการแรกใน nodeList นั้น
- จากนั้นคุณสามารถตั้งค่า
innerHTML
ของรายการนั้นเพื่อเปลี่ยนเนื้อหาได้
ข้อควรระวัง: เบราว์เซอร์รุ่นเก่าบางตัวไม่รองรับgetElementsByClassName
(เช่น IE เวอร์ชันเก่า) ฟังก์ชั่นนั้นสามารถเปลี่ยนตำแหน่งได้หากขาดหายไป
นี่คือที่ที่ฉันแนะนำให้ใช้ไลบรารีที่มีการสนับสนุนตัวเลือก CSS3 ในตัวแทนที่จะกังวลเกี่ยวกับความเข้ากันได้ของเบราว์เซอร์ด้วยตัวคุณเอง (ปล่อยให้คนอื่นทำงานทั้งหมด) หากคุณต้องการเพียงแค่ไลบรารีทำเช่นนั้น Sizzle ก็จะทำงานได้ดี ใน Sizzle สิ่งนี้จะทำได้ดังนี้:
Sizzle("#foo .bar")[0].innerHTML = "Goodbye world!";
jQuery มีไลบรารี Sizzle ในตัวและใน jQuery สิ่งนี้จะเป็น:
$("#foo .bar").html("Goodbye world!");
document.getElementsByClassName
จะทำงานได้ดี