⊗jsSpStGWD 43 of 294 menu

การรับ DOM elements โดยไม่ซ้ำกัน

สมมติว่าเรามีย่อหน้าและปุ่ม:

<p>aaa</p> <p>bbb</p> <p>ccc</p> <p>ddd</p> <p>eee</p> <button>click me</button>

ให้ผู้ใช้คลิกที่ย่อหน้าเหล่านี้ ตามลำดับใดก็ได้ มาทำให้ เมื่อกดปุ่มที่ท้ายแต่ละ ย่อหน้าที่ถูกคลิก จะมีเครื่องหมายอัศเจรีย์เพิ่มเข้ามา มาแก้โจทย์นี้ ด้วย Set

เริ่มกันเลย ก่อนอื่นมารับ element ของเรา ไว้ในตัวแปร:

let button = document.querySelector('button'); let elems = document.querySelectorAll('p');

สร้างคอลเลกชัน Set ใหม่:

let set = new Set;

วนลูปผ่านย่อหน้าทั้งหมดและเพิ่ม ตัวจัดการเหตุการณ์คลิกให้พวกมัน:

for (let elem of elems) { elem.addEventListener('click', function() { }); }

มาทำให้เมื่อคลิกที่ย่อหน้า จะเพิ่ม ย่อหน้านี้เข้าไปในคอลเลกชัน:

for (let elem of elems) { elem.addEventListener('click', function() { set.add(this); }); }

เนื่องจากเราใช้คอลเลกชัน Set การคลิกลงบนย่อหน้าซ้ำจะไม่ทำให้ เพิ่มย่อหน้าที่ซ้ำเข้าไป

มาทำให้เมื่อคลิกที่ปุ่ม ให้วนผ่าน เนื้อหาของคอลเลกชันของเราและเพิ่มเครื่องหมายอัศเจรีย์ ที่ท้ายแต่ละย่อหน้า:

button.addEventListener('click', function() { for (let elem of set) { elem.textContent = elem.textContent + '!'; } });

มีย่อหน้าและปุ่ม ผู้ใช้คลิก ที่ย่อหน้าเหล่านี้ตามลำดับใดก็ได้ จงทำให้ เมื่อกดปุ่มที่ท้ายแต่ละย่อหน้า ที่ถูกคลิก จะมี เครื่องหมายอัศเจรีย์เพิ่มเข้ามา

ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ