6
for (i = 0; i < document.checks.user.length; i++) //for all check boxes
{
    if (document.checks.user[i].checked == true )
    {
        document.checks.submit();
        return 0;
    }
}

<body>
<form action="" method=POST name="checks" ID="Form2">
  I have a bike:
  <input type="checkbox" name="user" value="Bike" ID="Checkbox1">
  <br>
  <br>
</form>
<input type="button" value="Delete" 
    class="btn" onclick="sub_delete()" 
    onmouseover="hov(this, 'btn btnhov')" onmouseout="hov(this, 'btn')" 
    id="Button1" name="Button1" 
/>
</body>

document.checks.user.length = undefinedのチェックボックスが1つしかない場合は、おそらくすでにご存知でしょう。チェックボックスが1つしかない場合に、それが削除されるようにするための最も効率的な方法は何ですか。ここでifステートメントの前に別のifステートメントとして追加することを考えていました。

ありがとう。

4

8 に答える 8

3
if (document.getElementById('Checkbox1').checked) { /* do something */ }

一連のチェックボックスをループする場合は、次のようにフォームの入力フィールドをループできます。

var formNodes  = document.checks.getElementsByTagName('input');
for (var i=0;i<formNodes.length;i++) {
   /* do something with the name/value/id or checked-state of formNodes[i] */
}
于 2009-02-11T07:31:27.920 に答える
1
if(document.checks.user[0]) {
  //it's an array
}
else {
  //it's a single element
}
于 2009-02-11T05:36:32.690 に答える
1

非常に簡単です。既存のチェックボックスの入力タグと同じ名前の非表示の入力タグを作成するだけです。

例えば:

<input type="checkbox" name="user" value="Bike" ID="Checkbox1">
<input type="hidden" name="user" value=""/>
于 2012-09-17T11:39:18.777 に答える
1

あなたのjavascriptは明らかに「sub_delete」と呼ばれる関数の中になければならないので、あなたの質問はやや混乱しています...質問を編集する強力な力を持つ誰かがそれをより明確にすることで質問を改善するかもしれません...

したがって、回避しなければならない最初の問題は、指定された名前「ユーザー」を持つ単一のチェックボックスは配列ではないため、長さが定義されていないという事実ですが、配列としてアクセスしようとすると..物事は混乱します.. JavaScript関数を完全に書き直すと、次のようになります。

    function sub_delete{
        if (typeof document.checks.user.length === 'undefined') {
   /*then there is just one checkbox with the name 'user' no array*/
        if (document.checks.user.checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }   
    }else{
  /*then there is several checkboxs with the name 'user' making an array*/
        for(var i = 0, max = document.checks.user.length; i < max; i++){
            if (document.checks.user[i].checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }

        }
    }
    }//sub_delete end

HTH、-FT

于 2010-08-02T06:23:57.133 に答える
1

私も同じ問題に直面し、合計 5 つのチェックボックスのうち 4 つが無効になり、1 つが有効になります。現在、checkboxId.length は定義されていないため、考えられる唯一のオプションは if(checkboxId.length ==undefined ){checkboxId.checked=true & submith the form} です。

于 2010-12-29T06:54:29.493 に答える