0

すべてのチェック ボックスをオンにする単純な JavaScript を作成しました。2 つのブラウザで動作しますが、1 つのブラウザでは動作しません。このスクリプトをIE8以上と互換性を持たせるために、誰か助けてくれませんか。

<script language="JavaScript">

function toggle(source) {

  checkboxes = document.getElementsByName('marked[]');

  for(var i in checkboxes)

    checkboxes[i].checked = source.checked;

}

</script>

    <p>

        <input type="checkbox" onClick="toggle(this)" /> Select All

    </p> 

ありがとう、

ヨナ

4

1 に答える 1

7

単純なループを試してください:

for (var i = 0; i <checkboxes.length; i++) {
    checkboxes[i].checked = source.checked;
}

getElementsByName、プレーンな配列ではない HTMLCollection を返します。おそらく、ブラウザーごとに異なる方法で処理されます。ほとんどの場合、Firefox と Chrome はfor(var i in checkboxes)ループを使用するとインデックスを返しますが、IE はアイテム自体を返します。基本的な構文はすべてのブラウザーで同じであるため、単純なループはこれを解決する必要があります。

于 2012-10-03T09:27:06.157 に答える