JS กวดวิชา

เจเอสโฮม JS Introduction JS Where To JS เอาท์พุต งบ JS JS ไวยากรณ์ JS ความคิดเห็น ตัวแปร JS เจเอส เลท JS Const JS Operators JS เลขคณิต JS Assignment ประเภทข้อมูล JS ฟังก์ชัน JS วัตถุ JS JS Events JS Strings JS String Methods JS String Search เทมเพลตสตริง JS JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Array Const JS Dates รูปแบบวันที่ JS JS วันที่รับเมธอด JS Date Set Methods JS Math JS สุ่ม JS Booleans JS เปรียบเทียบ JS Conditions JS Switch JS ลูปสำหรับ JS Loop สำหรับ In JS วนสำหรับ Of JS วนรอบในขณะที่ JS Break JS Iterables JS ชุด JS Maps JS Typeof JS ประเภทการแปลง JS Bitwise JS RegExp JS Errors JS ขอบเขต JS Hoisting JS โหมดเข้มงวด JS คำสำคัญนี้ JS Arrow Function JS Classes JS JSON JS Debugging คู่มือสไตล์ JS JS แนวทางปฏิบัติที่ดีที่สุด JS ความผิดพลาด JS Performance JS สงวนคำ

เวอร์ชัน JS

เวอร์ชัน JS JS 2009 (ES5) เจเอส 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / ขอบ JS History

วัตถุ JS

คำจำกัดความของวัตถุ คุณสมบัติของวัตถุ วิธีการวัตถุ การแสดงวัตถุ อุปกรณ์เสริมวัตถุ ตัวสร้างวัตถุ ต้นแบบวัตถุ วัตถุ Iterables ชุดวัตถุ แผนที่วัตถุ การอ้างอิงวัตถุ

ฟังก์ชัน JS

คำจำกัดความของฟังก์ชัน พารามิเตอร์ฟังก์ชัน เรียกใช้ฟังก์ชัน เรียกฟังก์ชัน ฟังก์ชัน สมัคร การปิดฟังก์ชัน

JS Classes

แนะนำคลาส การสืบทอดคลาส คลาสคงที่

JS Async

JS Callbacks JS แบบอะซิงโครนัส JS Promises JS Async/รอ

JS HTML DOM

บทนำ DOM วิธี DOM เอกสาร DOM องค์ประกอบ DOM DOM HTML แบบฟอร์ม DOM DOM CSS ภาพเคลื่อนไหว DOM กิจกรรม DOM DOM Event Listener การนำทาง DOM โหนด DOM DOM Collections รายการโหนด DOM

JS เบราว์เซอร์ BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS Web APIs

แนะนำ Web API เว็บฟอร์ม API API ประวัติเว็บ API ที่เก็บข้อมูลเว็บ Web Worker API API ดึงเว็บ เว็บ Geolocation API

JS AJAX

บทนำ AJAX AJAX XMLHttp คำขอ AJAX การตอบสนอง AJAX ไฟล์ AJAX XML AJAX PHP AJAX ASP ฐานข้อมูล AJAX แอปพลิเคชัน AJAX ตัวอย่าง AJAX

JS JSON

บทนำ JSON ไวยากรณ์ JSON JSON กับ XML ประเภทข้อมูล JSON JSON Parse JSON สตริงริฟาย วัตถุ JSON อาร์เรย์ JSON เซิร์ฟเวอร์ JSON JSON PHP JSON HTML JSON JSONP

JS กับ jQuery

ตัวเลือก jQuery jQuery HTML jQuery CSS jQuery DOM

JS กราฟิก

JS กราฟิก JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

ตัวอย่าง JS

ตัวอย่าง JS JS HTML DOM JS HTML อินพุต JS HTML Objects JS HTML Events JS Browser JS Editor JS แบบฝึกหัด JS Quiz ใบรับรอง JS

JS References

วัตถุ JavaScript วัตถุ HTML DOM


JavaScript HTML DOM การนำทาง


ด้วย HTML DOM คุณสามารถนำทางโหนดทรีโดยใช้ความสัมพันธ์ของโหนด


โหนด DOM

ตามมาตรฐาน W3C HTML DOM ทุกอย่างในเอกสาร HTML จะเป็นโหนด:

  • เอกสารทั้งหมดเป็นโหนดเอกสาร
  • องค์ประกอบ HTML ทุกองค์ประกอบเป็นโหนดองค์ประกอบ
  • ข้อความภายในองค์ประกอบ HTML เป็นโหนดข้อความ
  • ทุกแอตทริบิวต์ HTML เป็นโหนดแอตทริบิวต์ (เลิกใช้แล้ว)
  • ความคิดเห็นทั้งหมดเป็นโหนดความคิดเห็น
DOM HTML tree

ด้วย HTML DOM โหนดทั้งหมดในแผนผังโหนดสามารถเข้าถึงได้โดย JavaScript

โหนดใหม่สามารถสร้างได้ และโหนดทั้งหมดสามารถแก้ไขหรือลบได้


ความสัมพันธ์ของโหนด

โหนดในแผนผังโหนดมีความสัมพันธ์แบบลำดับชั้นซึ่งกันและกัน

คำว่า parent, child และ brother ใช้เพื่ออธิบายความสัมพันธ์

  • ในโหนดทรี โหนดบนสุดเรียกว่ารูท (หรือโหนดรูท)
  • ทุกโหนดมีพาเรนต์เพียงตัวเดียว ยกเว้นรูท (ซึ่งไม่มีพาเรนต์)
  • โหนดสามารถมีลูกได้จำนวนหนึ่ง
  • พี่น้อง (พี่น้อง) เป็นโหนดที่มีผู้ปกครองคนเดียวกัน
<html>

  <head>
    <title>DOM Tutorial</title>
  </head>

  <body>
    <h1>DOM Lesson one</h1>
    <p>Hello world!</p>
  </body>

</html>
ต้นไม้โหนด

จาก HTML ด้านบน คุณสามารถอ่าน:

  • <html>คือโหนดรูท
  • <html>ไม่มีพ่อแม่
  • <html>เป็นผู้ปกครองของ<head>และ<body>
  • <head>เป็นลูกคนแรกของ<html>
  • <body>เป็นลูกคนสุดท้ายของ<html>

และ:

  • <head>มีลูกหนึ่งคน:<title>
  • <title>มีลูกหนึ่งคน (โหนดข้อความ): "DOM Tutorial"
  • <body>มีลูกสองคน: <h1>และ<p>
  • <h1>มีลูกหนึ่งคน: "DOM บทที่หนึ่ง"
  • <p>มีลูกหนึ่งคน: "สวัสดีชาวโลก!"
  • <h1>และ<p>เป็นพี่น้องกัน


การนำทางระหว่างโหนด

คุณสามารถใช้คุณสมบัติของโหนดต่อไปนี้เพื่อนำทางระหว่างโหนดต่างๆ ด้วย JavaScript:

  • parentNode
  • childNodes[nodenumber]
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

โหนดย่อยและค่าโหนด

ข้อผิดพลาดทั่วไปในการประมวลผล DOM คือการคาดหวังว่าโหนดองค์ประกอบจะมีข้อความ

ตัวอย่าง:

<title id="demo">DOM Tutorial</title>

โหนดองค์ประกอบ <title>(ในตัวอย่างด้านบน) ไม่มีข้อความ

ประกอบด้วยโหนดข้อความที่มีค่า "DOM Tutorial"

ค่าของโหนดข้อความสามารถเข้าถึงได้โดย innerHTMLคุณสมบัติของโหนด:

myTitle = document.getElementById("demo").innerHTML;

การเข้าถึงคุณสมบัติ innerHTML เหมือนกับการเข้าถึงnodeValue ของลูกคนแรก:

myTitle = document.getElementById("demo").firstChild.nodeValue;

การเข้าถึงลูกคนแรกสามารถทำได้ดังนี้:

myTitle = document.getElementById("demo").childNodes[0].nodeValue;

ตัวอย่างทั้งหมด (3) ต่อไปนี้ดึงข้อความของ<h1>องค์ประกอบและคัดลอกลงใน<p>องค์ประกอบ:

ตัวอย่าง

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>

ตัวอย่าง

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>

ตัวอย่าง

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>

InnerHTML

ในบทช่วยสอนนี้ เราใช้คุณสมบัติ innerHTML เพื่อดึงเนื้อหาขององค์ประกอบ HTML

อย่างไรก็ตาม การเรียนรู้วิธีอื่นๆ ข้างต้นมีประโยชน์ในการทำความเข้าใจโครงสร้างต้นไม้และการนำทางของ DOM


โหนดรูท DOM

มีคุณสมบัติพิเศษสองประการที่อนุญาตให้เข้าถึงเอกสารฉบับเต็ม:

  • document.body - เนื้อความของเอกสาร
  • document.documentElement - เอกสารฉบับเต็ม

ตัวอย่าง

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.body</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.body.innerHTML;
</script>

</body>
</html>

ตัวอย่าง

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.documentElement</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.documentElement.innerHTML;
</script>

</body>
</html>

คุณสมบัติ nodeName

คุณสมบัติnodeNameระบุชื่อของโหนด

  • nodeName เป็นแบบอ่านอย่างเดียว
  • nodeName ขององค์ประกอบ node เหมือนกับชื่อแท็ก
  • nodeName ของโหนดแอตทริบิวต์คือชื่อแอตทริบิวต์
  • nodeName ของโหนดข้อความจะเป็น #text . เสมอ
  • nodeName ของโหนดเอกสารอยู่เสมอ #document

ตัวอย่าง

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>

หมายเหตุ: nodeNameมีชื่อแท็กตัวพิมพ์ใหญ่ขององค์ประกอบ HTML เสมอ


คุณสมบัติ nodeValue

คุณสมบัติnodeValueระบุค่าของโหนด

  • nodeValue สำหรับโหนดองค์ประกอบ is null
  • nodeValue สำหรับโหนดข้อความคือตัวข้อความเอง
  • nodeValue สำหรับโหนดแอตทริบิวต์คือค่าแอตทริบิวต์

คุณสมบัติ nodeType

คุณสมบัติnodeTypeเป็นแบบอ่านอย่างเดียว ส่งคืนประเภทของโหนด

ตัวอย่าง

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>

คุณสมบัติ nodeType ที่สำคัญที่สุดคือ:

Node Type Example
ELEMENT_NODE 1 <h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE 2  class = "heading" (deprecated)
TEXT_NODE 3 W3Schools
COMMENT_NODE 8 <!-- This is a comment -->
DOCUMENT_NODE 9 The HTML document itself (the parent of <html>)
DOCUMENT_TYPE_NODE 10 <!Doctype html>

ประเภทที่ 2 เลิกใช้แล้วใน HTML DOM (แต่ใช้งานได้) ไม่ได้เลิกใช้งานใน XML DOM