Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

วิธีสลับคลาสด้วยคุณสมบัติ JavaScript classList

วิธีสลับคลาสในองค์ประกอบด้วย JavaScript เป็นหนึ่งในทักษะที่ใช้งานได้จริงที่สุดที่คุณสามารถเรียนรู้ได้ในฐานะนักพัฒนา การสลับใช้สำหรับหลายๆ อย่าง รวมถึงการแสดงและซ่อนเมนู การเพิ่มและลบตัวกรองการค้นหา และปุ่มโซเชียลมีเดีย (ชอบ ยกนิ้วให้ เป็นต้น)

วิธีสลับคลาสด้วยคุณสมบัติ JavaScript classList

การสลับไม่จำเป็นต้องซับซ้อนกว่าโค้ดสองสามบรรทัด แน่นอน ขึ้นอยู่กับบริบท วันนี้เราจะมาเรียนรู้วิธีง่ายๆ ในการเริ่มต้นด้วยการสลับไม่เพียงแต่เรียนรู้ JavaScript โดยทั่วไป

โครงสร้าง HTML

ก่อนที่เราจะไปถึงสิ่งที่ใช้งานได้จริงด้วย JavaScript เรามาตั้งค่าองค์ประกอบ HTML สองสามอย่างเพื่อให้เรามีบางสิ่งที่จะโต้ตอบด้วย มาสร้างเสื้อคลุม ปุ่ม และกล่องกัน

ใส่ข้อมูลต่อไปนี้ในแท็กเนื้อหาของเอกสาร HTML:

<div class="wrapper">
  <button class="button">Toggle</button>
  <div class="box"></div>
</div>

องค์ประกอบ div หลัก (เสื้อคลุม) อยู่ที่นั่นเท่านั้นเพื่อให้เราสามารถจัดองค์ประกอบลูก (กล่องและปุ่ม) ด้วย CSS ได้ นี่คือเครื่องสำอาง ไม่จำเป็นสำหรับสิ่งนี้ที่จะได้ผล

หมายเหตุ:หากคุณใช้เครื่องมือแก้ไขโค้ดออนไลน์ เช่น CodePen คุณสามารถเพิ่มโค้ดนี้ในหน้าต่างแท็บ HTML พวกเขาเพิ่มส่วนที่เหลือของ HTML ให้คุณเบื้องหลัง ซึ่งรวมถึงแท็กเนื้อหา

รูปแบบ CSS

องค์ประกอบ div หลักมี .wrapper คลาสที่มีคุณสมบัติ Flexbox บางอย่างที่จัดวางองค์ประกอบย่อยไว้ตรงกลาง:กล่องและปุ่ม ฉันจะไม่อธิบายวิธีการและเหตุผลของ Flexbox นั่นสำหรับบทช่วยสอนอื่น

ปุ่มและกล่องมีคลาสสไตล์พื้นฐานสำหรับการตกแต่ง

.wrapper {
  padding: 2rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.box {
  width: 200px;
  height: 200px;
  background-color: #eeeeee;
}

.button {
  display: block;
  text-align: center;
  font-size: 1.5rem;
  color: white;
  background-color: #262422;
  border-radius: 4px;
  padding: 1rem 2rem;
  margin-bottom: 1rem;
}

.bg-red {
  background-color: #aa2f18;
}

สิ่งสำคัญที่ต้องเน้นที่นี่คือ .bg-red คลาสที่มี CSS สีพื้นหลัง คุณสมบัติที่มีค่า '#AA2F18' (สีแดง) นี่คือคลาสที่เราต้องการสลับ (เพิ่มหรือลบ) ไปที่องค์ประกอบกล่องของเราเมื่อเราคลิกที่องค์ประกอบปุ่ม

การจัดการเหตุการณ์ JavaScript

ก่อนที่เราจะสามารถเริ่มจัดการองค์ประกอบด้วย JavaScript เราต้องเก็บข้อมูลอ้างอิงถึงสององค์ประกอบของเรา (กล่องและปุ่ม) ก่อน เราทำได้โดยการประกาศตัวแปรสองตัว button และ box .จากนั้นเรากำหนดองค์ประกอบทั้งสองให้กับตัวแปรที่เกี่ยวข้องกัน

ในการเลือกองค์ประกอบกล่องและปุ่มที่เราต้องการเก็บข้อมูลอ้างอิง เราจะใช้ querySelector อันรุ่งโรจน์ วิธีการคว้าคลาสองค์ประกอบของเรา:

let button = document.querySelector(".button");
let box = document.querySelector(".box");

ตอนนี้เรามีข้อมูลอ้างอิงถึงองค์ประกอบเป้าหมายแต่ละองค์ประกอบแล้ว เราสามารถจัดการ DOM ได้ โดยเข้าถึงคุณสมบัติและเมธอดขององค์ประกอบเหล่านั้น ในกรณีนี้ เราต้องการใช้ ตัวฟังเหตุการณ์ ที่ฟังเหตุการณ์การคลิก บนองค์ประกอบปุ่ม หลังจากที่ตรวจพบการคลิกแล้ว เราต้องการเรียกใช้ฟังก์ชัน ที่ใช้สีพื้นหลังสลับ บนองค์ประกอบกล่องของเรา

ในการทำเช่นนั้น เราจะแนบ addEventListener() วิธีการองค์ประกอบปุ่มของเรา (ผ่านการอ้างอิงตัวแปร) ภายในเมธอดตัวฟังเหตุการณ์นี้ เรากำลังเพิ่มค่าพารามิเตอร์สองค่า:'click' (ประเภทเหตุการณ์)และfunction() . เราจะใช้ฟังก์ชันที่ไม่ระบุชื่อ (ไม่มีชื่อ) ในตัวอย่างนี้

จากนั้นในฟังก์ชันที่ไม่ระบุชื่อ:เราแนบ toggle() . ของคุณสมบัติ JavaScript classList วิธีการองค์ประกอบกล่องของเรา งานของวิธีการสลับคือการเพิ่มหรือลบ .bg-red . ของเรา คลาส:

button.addEventListener("click", function() {
  box.classList.toggle("bg-red");
});

วิธีการสลับ classList ทำงานดังนี้:หากคลาสที่ระบุมีอยู่แล้วในองค์ประกอบเป้าหมาย คลาสนั้นจะถูกลบออก หากไม่มีอยู่ก็จะถูกเพิ่มเข้าไป

เสร็จแล้ว! ตอนนี้คุณรู้วิธีสลับคลาสในองค์ประกอบที่ระบุด้วย JavaScript ธรรมดาแล้ว ฉันใส่โค้ดทั้งหมดจากบทช่วยสอนนี้ใน CodePen

โค้ดนี้ใช้ได้กับเบราว์เซอร์รุ่นใหม่ตั้งแต่ IE10 ขึ้นไป