-1

a)ループせずに、b)jQueryなどのJavascriptフレームワークを使用せずに、ページのチェックボックスのセットをオンまたはオフにすることは可能ですか?

この質問は関連していますが、jQueryを使用してページのすべてのチェックボックスを(オフに)チェックすることについてです。

私の質問に対する答えはおそらく「いいえ」になると思いますが、それを行うための奇妙でハッキーな方法がある場合(奇妙ではなく、ハッキーでもないことも良いです!)、知りたいと思います。あなたがそうするなら、それを好奇心と呼んでください。

編集:私が本当に求めているのは、O(n)(チェックボックスの数に関する線形時間)ではなく、O(1)(定数時間)でそれを行う方法だと思います

4

4 に答える 4

2

ボタンがフォーム内にある場合、デフォルトの状態がチェックされておらず、フォーム内の他のすべてのコントロールをリセットしてもかまわない場合は、リセットボタンを使用できます。それ以外の場合は、POJSを使用するか「フレームワーク」を使用するかに関係なく、ループを使用する必要があります。

ほら、スクリプトなし!

<form action="#">
  <div>
    <input type="checkbox" name="cb0">
    <input type="checkbox" name="cb1">
    <input type="checkbox" name="cb2">
    <input type="checkbox" name="cb3">
    <br>
    <input type="reset" value="Uncheck all">
  </div>
</form>
于 2011-06-16T23:16:40.597 に答える
1

map()を使用してこれを行うことができます。これは、「ループ」に使用する定義の厳密さに応じて、ループである場合とそうでない場合があります:)しかし、実際には、これはループをキャストする別の方法です。あなたの質問に対する答えは「いいえ」だと思います。


編集:

var checkboxes = getElement...
checkboxes.map(function(c) {
    c.checked = true;
});
于 2011-06-16T21:57:30.203 に答える
1

ページ上の一連のチェックボックスをオンまたはオフにする方法の1つは、それぞれを個別に参照することです。

これは、基準「a」(ループなし)と基準b(フレームワークなし)の両方を満たしています。

于 2011-06-16T21:57:59.167 に答える
0

完全なHTMLコードを変更/オーバーライドできます。

<div id="checkBoxes">
<input name="foo" type="checkbox" value="1" />
<input name="bar" type="checkbox" value="1" />
<input name="baz" type="checkbox" value="1" />
</div>

<script type="text/javascript">
function checkAll(){
    document.getElementById("checkBoxes").innerHTML = 
         '<input name="foo" type="checkbox" value="1" checked="checked" />'
        +'<input name="bar" type="checkbox" value="1" checked="checked" />'
        +'<input name="baz" type="checkbox" value="1" checked="checked" />';
}
function uncheckAll(){
    document.getElementById("checkBoxes").innerHTML = 
         '<input name="foo" type="checkbox" value="1" />'
        +'<input name="bar" type="checkbox" value="1" />'
        +'<input name="baz" type="checkbox" value="1" />';
}
</script>

ループもフレームワークもありません。少し美的ではありません。

于 2011-06-16T22:04:10.147 に答える