1. มันใช้งานได้ใน IE, Firefox ไม่ทำงาน
เช่นเวอร์ชัน
คัดลอกรหัสรหัสดังนี้:
<script type = "text/javascript">
ฟังก์ชั่น checkall (str) // js ที่เลือกเต็มรูปแบบ
-
var a = document.getElementsByName (str);
var n = a.length;
สำหรับ (var i = 0; i <n; i ++)
-
A [i] .Checked = window.event.srelement.checked;
-
-
</script>
Fire Fox เวอร์ชัน
คัดลอกรหัสรหัสดังนี้:
<script type = "text/javascript">
ฟังก์ชั่น checkall (str) // js ที่เลือกเต็มรูปแบบ
-
var a = document.getElementsByName (str);
var n = a.length;
สำหรับ (var i = 0; i <n; i ++) {
A [i] .Checked = document.getElementById ("ทั้งหมด")
-
-
</script>
การวิเคราะห์สาเหตุ: หน้าต่างสามารถทำงานได้ภายใต้ IE เท่านั้นดังนั้น JS จึงไม่ทำงานภายใต้ Fire Fox ในเวอร์ชัน Fire Fox จะเลือกช่องทำเครื่องหมายของ "id = ทั้งหมด" โดยตรงจากนั้นแต่ละรายการของกลุ่มช่องทำเครื่องหมายของ "name = str" จะถูกกำหนดเพื่อให้การซิงโครไนซ์สถานะการเลือก
2. ความแตกต่างระหว่าง document.getElementById () และเอกสาร
JS ข้างต้นได้รับสถานะของช่องทำเครื่องหมายในสองวิธี อย่างไรก็ตามวิธีการทั้งสองนี้แตกต่างกัน ในเวลานั้นฉันรู้สึกอยากใช้หนึ่งครั้ง แต่หลังจากเปลี่ยนชื่อรหัส JS ไม่ได้ผล
(1) Document.getElementById () คือการเข้าถึงองค์ประกอบบางอย่างผ่าน ID เนื่องจาก ID ในหน้าเดียวไม่ซ้ำกันดังนั้นฟังก์ชั่นนี้จะส่งคืนองค์ประกอบ
(2) document.getElementsByName () คือการเข้าถึงองค์ประกอบผ่านชื่อเนื่องจากชื่อในหน้าเดียวไม่ได้เป็นเพียงหนึ่งเดียวสามารถเปลี่ยนได้ดังนั้นฟังก์ชั่นนี้จะส่งคืนชุดขององค์ประกอบ
มันเป็นเพราะหนึ่งคือองค์ประกอบและอื่น ๆ เป็นอาร์เรย์ดังนั้นข้อผิดพลาดจะเกิดขึ้นเมื่อคุณไม่ใส่ใจเมื่อผสมส่งผลให้ JS ไม่สามารถทำงานได้ ตัวอย่างเช่นในเวลาที่ฉันใช้ [i]. checked = document.getElementById ("ทั้งหมด") แต่ไม่ได้รายงานข้อผิดพลาดมันรู้สึกว่ามันไม่ได้ผล) ]. ตรวจสอบ; เนื่องจากมีช่องทำเครื่องหมายเดียวที่มี "name = ทั้งหมด" ในหน้าของเราเราจึงใช้ [0] เพื่อใช้องค์ประกอบแรกในองค์ประกอบนั่นคือเราใช้ [i]. checked = document.getElementById ("ทั้งหมด") ตรวจสอบ;