1

JSには、フォーム内のすべてのチェックボックスをチェックする関数があります。

function CheckAll(chk){
    for (i = 0; i < chk.check.length; i++)
        if (chk.All.checked==true){
            chk.check[i].checked = true;
            chk.check[i].disabled = true;
        }
        else {
            chk.check[i].disabled = false;
            chk.check[i].checked = false;
        }
}

最近radioフォームにいくつかのボタンを追加しましたが、質問は次のとおりです。この関数はすべてのラジオボタンもアクティブにします(選択できるラジオボタンは1つだけですが、次のようなスクリプトでこれがどのように機能するかはわかりません。それ..)?

ここに私のフォームコードがあります:

<form name='MyForm'>
    <b>This is my Simple Form</b></br>
    </br>
    <input type='radio' name='parameter' value='ONE' checked='checked' />ONE<br/>
    <input type='radio' name='parameter' value='TWO' />TWO<br/>
    <input type='radio' name='parameter' value='THREE' />THREE<br/>
    <input type='radio' name='parameter' value='FOUR' />FOUR<br/>
    <input type='radio' name='parameter' value='FIVE' />FIVE<br/>
    <input type='radio' name='parameter' value='SIX' />SIX<br/>
    <input type='radio' name='parameter' value='SEVEN' />SEVEN<br/>
    <script>
        document.write("</br>");
        var count
        var check_value = new Array()
        check_value[0] = "001"
        check_value[1] = "002"
        check_value[2] = "003"
        check_value[3] = "004"
        for(count in check_value){
            var checkbox = "<input type='checkbox' name='check' value='"+check_value[count]+"' />"
            document.write(checkbox + check_value[count] + "  ");
        }
        document.write("<input type='checkbox' name='All' value='All' onClick='CheckAll(document.MyForm);' /> All");
    </script>
    </br>
    </br>
    <input type=button value='Ok' onClick='foo(document.MyForm);'>
</form>

これが希望どおりに機能しない場合、どうすれば解決できますか?

4

3 に答える 3

2

テストはそれと同じくらい簡単です: http://jsfiddle.net/yk9uD/

コンテンツ :

<form name='MyForm'>
    <b>This is my Simple Form</b></br>
    </br>
    <input type='radio' name='parameter' value='ONE' checked='checked' />ONE<br/>
    <input type='radio' name='parameter' value='TWO' />TWO<br/>
    <input type='radio' name='parameter' value='THREE' />THREE<br/>
    <input type='radio' name='parameter' value='FOUR' />FOUR<br/>
    <input type='radio' name='parameter' value='FIVE' />FIVE<br/>
    <input type='radio' name='parameter' value='SIX' />SIX<br/>
    <input type='radio' name='parameter' value='SEVEN' />SEVEN<br/>
    <script>
      function CheckAll(chk){
  for (i = 0; i < chk.check.length; i++) {
        if (chk.All.checked==true){
            chk.check[i].checked = true;
            chk.check[i].disabled = true;
        }
        else {
            chk.check[i].disabled = false;
            chk.check[i].checked = false;
        }
}
}
        document.write("</br>");
        var count;
        var check_value = new Array()
        check_value[0] = "001"
        check_value[1] = "002"
        check_value[2] = "003"
        check_value[3] = "004"
        for(count in check_value){
            var checkbox = "<input type='checkbox' name='check' value='"+check_value[count]+"' />"
            document.write(checkbox + check_value[count] + "  ");
        }
        document.write("<input type='checkbox' name='All' value='All' onClick='CheckAll(document.MyForm);' /> All");
    </script>
    </br>
    </br>
    <input type=button value='Ok' onClick='foo(some var);'>
</form>

質問に対する答えは次のとおりです。いいえ、すべてのラジオ ボタンが選択されるわけではありません。

その理由は、コードが次の名前の入力に対してのみ反復するためですcheck

for (i = 0; i < chk.check.length; i++) {
于 2013-01-11T10:29:09.207 に答える
1

いいえ、ラジオ ボタンでは機能しません。ラジオボタンに付けられた名前は、チェックボックスの名前とは異なります。したがって、関数はラジオボタンに触れません。ただし、ラジオボタンとチェックボックスを同じクラス名で提供するクラスのイベントを作成した場合、関数にはラジオボタンも含まれます。ただし、その場合、最後のラジオ ボタンのみがチェックされます。実際、コードの実行中にすべてのラジオ ボタンがチェックされます。ただし、同じ名前のラジオ ボタンが再び見つかった場合、以前にチェックされた属性が削除され、チェックされた属性が現在のノードに適用されます。

于 2013-01-11T10:38:19.407 に答える