2

javascriptでチェックボックスを操作しようとしています。IE(IE8を使用)には、以下のコードに問題があるようです。Firefoxでは完全に機能します。

これは私のサンプルhtmlです。

<input type="checkbox" name="one" id="one" />
<input type="checkbox" name="two" id="two" />
<input type="checkbox" name="three" id="three" />
<input type="checkbox" name="four" id="four" />
<input type="checkbox" name="five" id="five" />

IEは、「5」と「3」をタッチせずに、IDが「1」のチェックボックスを無効にするだけです。

var all = new Array("one","two","three","four","five");
var some = new Array("one","five","three");

disableFew(some);

function disableFew(few){
    for (var i in all){
        document.getElementById(all[i]).disabled = false;
    }
    for (var j in few){
        if(document.getElementById(few[j]).nodeName == 'INPUT'){
            document.getElementById(few[j]).checked = false;
        }
        document.getElementById(few[j]).value = 'disabled';
        document.getElementById(few[j]).disabled = true;
    }
}

何が起こっているのかについての手がかりはありますか?私はWeb開発の初心者なので、IE/Firefoxのニュアンスが欠けている可能性があります。

助けていただければ幸いです!

4

1 に答える 1

4

for通常のループを使用する必要があります。

for(var i=0; i<all.length; i++) ...
for(var j=0; j<some.length; j++) ...

使用for..inしている は、配列インデックスだけでなく、配列プロトタイプから他のプロパティを反復処理します。

また、変数名として使用することは避けたいと思いallます。IE が混乱する可能性があります ( document.all. しかし、これについてはよくわかりません。

于 2012-06-20T01:12:17.860 に答える