1. IE では動作しますが、Firefox では動作しません IE のバージョン
原因分析: window.event は IE でのみ実行できるため、Firefox で js を実行すると機能しません。 Firefox版では、「id=all」のチェックボックスの選択状態を直接取得し、「name=str」のチェックボックスグループの各項目に代入することで、選択状態を同期させることができます。
2. document.getElementById() と document.getElementsByName() の違い
上記の js は、名前からチェックボックスのステータスを取得します。見てください。これらの関数は似ているはずです。一方は id を通じて要素を取得し、もう一方は名前を通じて要素を取得します。ただし、2 つの方法には違いがあるため、使用時に注意しないと、同じ意味で使用できると思われ、混乱が生じる可能性があります。当時はどれでも良いと思っていたのですが、名前を変更したらjsコードが動かなくなりました、実はそれは私が理解していなかったので間違って使っていたのです。
(1) document.getElementById() は ID を介して特定の要素にアクセスします。ID はページ内で一意であるため、この関数は要素 (2) document.getElementsByName() を返します。名前はページ内で一意ではなく、同じ名前を持つことができるため、この関数は要素
のセットを返します。これは、一方が要素であり、もう一方が配列であるためです。これらを混合するときに注意しないと、エラーが発生し、js が実行できなくなります。たとえば、a[i].checked=document.getElementById("all").checked; を a[i].checked=document.getElementsByName("all").checked; に変更すると、js が実行できなくなりました。 (jsはエラーを起こすがエラーを報告しないので、効果がないように感じます) 実際には、ここで認識されないのではなく、呼び出し時に間違って使用されているためです。 is a[i].checked=document.getElementsByName("all ")[0].checked; このように変更すると、効果は同じになります。このページには「name=all」のチェックボックスが 1 つしかないため、[0] を使用して Elements の最初の要素を取得します。つまり、 a[i].checked=document.getElementById("all") を渡します。チェック済み;取得された要素。