0

私はjavascriptを始めたばかりなので、私の質問がばかげていると思われる場合はご容赦ください。最初のチェックボックスをオンにすると他のチェックボックスが有効になるように、いくつかのチェックボックスを備えたWebページをデザインしたいと思います。JSを使用してそれを行うにはどうすればよいですか?私は次のコードを書きました:

function checkBox() {
    if (window.document.form1.mainbox.checked=true) {
        for (i=0;i<window.document.form1.Others.length;i++) {
            window.document.form1.Others[i].disabled=false;
        }
    }
    else {
        for (i=0;i<window.document.form1.Others.length;i++) {
            window.document.form1.Others[i].disabled=true;
        }
    }
}

そしてこのhtml:

<form name="form1">
<input name="mainbox" value="mainbox" onclick="checkBox()" type="checkbox"> Mainbox<br>
<input disabled="disabled" checked="checked" tabindex="0" name="Others"   type="checkbox">No. 1<br>
<input disabled="disabled" checked="checked" tabindex="1" name="Others" type="checkbox"> No. 2<br>
<input disabled="disabled" checked="checked" tabindex="2" name="Others" type="checkbox"> No. 3<br>
</form>

問題は、最初のクリックで他のチェックボックスが有効になりますが、それ以降のクリックでは何も起こらないことです。つまり、それらは再び無効になりません。この問題を修正するにはどうすればよいですか?どんな助けでもありがたいです。ありがとう!

編集

私はgabitzishの提案に従い、それはうまくいきました。ただし、Othersをパラメーターとして渡したいので、次のように記述します。

<input name="mainbox" value="mainbox" onclick="checkBox(Others)" type="checkbox"> Mainbox<br>

スクリプトを次のように変更します。

window.checkBox = function(chkname) {
    if (window.document.form1.mainbox.checked==true) {
        for (i=0;i<window.document.form1.chkname.length;i++) {
            window.document.form1.chkname[i].disabled=false;
        }
    }
    else {
        for (i=0;i<window.document.form1.chkname.length;i++) {
            window.document.form1.chkname[i].disabled=true;
        }
    }
}

しかし、これは機能しません。ここで私を助けてください。とてもありがたいです。

4

2 に答える 2

2

この行に問題があります (= がありません)

if (window.document.form1.mainbox.checked=true)

に変更してみてください

if (window.document.form1.mainbox.checked)
于 2012-04-13T12:21:30.190 に答える
1

私はあなたのコードでjsFiddleを作成しました、そしていくつかのマイナーな変更:http: //jsfiddle.net/CUeDg/1/

元のコードの問題は、クリック時にcheckBox()関数が見つからなかったことです。

編集: 質問を後で編集するための解決策は次のとおりです。http://jsfiddle.net/CUeDg/3/ パラメータを文字列として関数に渡しました。

後で編集: 切り替える必要のあるチェックボックスのセットを知るには、そのパラメーターが必要だと思います。私もそのためにjsFiddleを作成しました:http://jsfiddle.net/CUeDg/5/ 間違っていると思われる場合は、回答のこの部分を考慮しないでください)

于 2012-04-13T12:27:03.680 に答える