อย่าใช้ในเบราว์เซอร์
ในเบราว์เซอร์ใช้document.querySelect('[attribute-name]')
.
แต่ถ้าคุณกำลังทดสอบหน่วยและโดมที่ถูกเยาะเย้ยของคุณมีการใช้งาน QuerySelector ที่ไม่ชัดเจนสิ่งนี้จะช่วยแก้เคล็ด
นี่คือคำตอบของ @ kevinfahy เพียงแค่ตัดทอนให้เล็กลงด้วยฟังก์ชัน ES6 fat arrow และโดยการแปลง HtmlCollection เป็นอาร์เรย์โดยมีค่าใช้จ่ายในการอ่าน
ดังนั้นมันจะใช้ได้กับทรานสไพเลอร์ ES6 เท่านั้น นอกจากนี้ฉันไม่แน่ใจว่ามันจะมีประสิทธิภาพเพียงใดเมื่อมีองค์ประกอบมากมาย
function getElementsWithAttribute(attribute) {
return [].slice.call(document.getElementsByTagName('*'))
.filter(elem => elem.getAttribute(attribute) !== null);
}
และนี่คือตัวแปรที่จะได้รับแอตทริบิวต์ที่มีค่าเฉพาะ
function getElementsWithAttributeValue(attribute, value) {
return [].slice.call(document.getElementsByTagName('*'))
.filter(elem => elem.getAttribute(attribute) === value);
}