How to filter elements
Learn how to filter DIV elements based on class names.
Filter DIV elements
BMW
Orange
Volvo
Red
Ford
Blue
Cat
Dog
Melon
Kiwi
Banana
Lemon
Cow
BYD
Create filterable DIV elements
Step 1 - Add HTML:
<!-- Control buttons --> <div id="myBtnContainer"> <button class="btn active" onclick="filterSelection('all')"> Show all</button> <button class="btn" onclick="filterSelection('cars')"> Cars</button> <button class="btn" onclick="filterSelection('animals')"> Animals</button> <button class="btn" onclick="filterSelection('fruits')"> Fruits</button> <button class="btn" onclick="filterSelection('colors')"> Colors</button> </div> <!-- สามารถกรององค์ประกอบได้. โปรดจำได้ว่า บางองค์ประกอบมีชื่อคลาสหลายอย่าง (หากมีอยู่ในหลายหมวดหมู่ สามารถใช้ชื่อคลาสเหล่านี้ได้) --> <div class="container"> <div class="filterDiv cars">BMW</div> <div class="filterDiv colors fruits">Orange</div> <div class="filterDiv cars">Volvo</div> <div class="filterDiv colors">Red</div> <div class="filterDiv cars">Ford</div> <div class="filterDiv colors">Blue</div> <div class="filterDiv animals">Cat</div> <div class="filterDiv animals">Dog</div> <div class="filterDiv fruits">Melon</div> <div class="filterDiv fruits animals">Kiwi</div> <div class="filterDiv fruits">Banana</div> <div class="filterDiv fruits">Lemon</div> <div class="filterDiv animals">Cow</div> </div>
ขั้นที่ 2 - เพิ่ม CSS:
.container { overflow: hidden; } .filterDiv { float: left; background-color: #2196F3; color: #ffffff; width: 100px; line-height: 100px; text-align: center; margin: 2px; display: none; /* ซ่อนโดยเริ่มต้น */ } /* ส่วนที่เพิ่มคลาส "show" ให้กับองค์ประกอบที่เคลื่อนไหว */ .show { display: block; } /* ตั้งรูปแบบปุ่ม */ .btn { border: none; outline: none; padding: 12px 16px; background-color: #f1f1f1; cursor: pointer; } /* ส่วนที่เพิ่มพื้นหลังสีเพื่อเมาส์เลอร์ */ .btn:hover { background-color: #ddd; } /* ส่วนที่เพิ่มพื้นหลังสีเข้มให้กับปุ่มที่กำลังใช้อยู่ */ .btn.active { background-color: #666; color: white; }
ขั้นที่ 3 - เพิ่ม JavaScript:
filterSelection("all") function filterSelection(c) { var x, i; x = document.getElementsByClassName("filterDiv"); if (c == "all") c = ""; // ส่งกลับความสำคัญให้แก่องค์ประกอบที่เปิดเผย (แสดงด้วย display:block) และลบความสำคัญ "show" จากองค์ประกอบที่ไม่ได้เลือก for (i = 0; i < x.length; i++) { w3RemoveClass(x[i], "show"); if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show"); } } // แสดงองค์ประกอบที่เปิดเผย function w3AddClass(element, name) { var i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { if (arr1.indexOf(arr2[i]) == -1) { element.className += " " + arr2[i]; } } } // ซ่อนองค์ประกอบที่ไม่ได้เลือก function w3RemoveClass(element, name) { var i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { while (arr1.indexOf(arr2[i]) > -1) { arr1.splice(arr1.indexOf(arr2[i]), 1); } } element.className = arr1.join(" "); } // ส่งกลับความสำคัญให้แก่ปุ่มควบคุมปัจจุบัน (แสดงด้วยสีสัน) var btnContainer = document.getElementById("myBtnContainer"); var btns = btnContainer.getElementsByClassName("btn"); for (var i = 0; i < btns.length; i++) { btns[i].addEventListener("click", function() { var current = document.getElementsByClassName("active"); current[0].className = current[0].className.replace(" active", ""); this.className += " active"; }); }