2

「タグ」という名前の動的に作成されたチェックボックスのリストがあります。これをjavascriptでループして、1つだけがチェックされていることを確認し、値を取得します。何らかの理由でこのチェックボックスのリストに項目が1つしかない場合、スクリプトはそれを調べません。タグの長さを警告すると、未定義になります。

    var total=[];
    for (var i=0; i < document.form1.tags.length; i++){
        if(document.form1.tags[i].checked==true){
            total.push(document.form1.tags[i].value);
        }
    }

    if(total.length==0){
        alert("Please select a product to edit.");
    }else if (total.length>1){
        alert("Please select only one product to edit.");
    }else{
        document.location = "go somewhere";
    }
4

4 に答える 4

4

なぜチェックボックスが必要なのですか?これは、ラジオボタンを使用する絶好の機会ではないでしょうか。

于 2012-11-08T22:19:11.300 に答える
2

2つの提案:

  1. 代わりに使用getElementsByNameしてすべての要素を取得し、それらを反復できるようにします。

  2. jqueryのようなフレームワークを使用します。jqueryまたは別のフレームワークを使用できない理由は何ですか?あなたの人生はとても楽になるでしょう。

var tags = document.getElementsByName('tags');
for(var i = 0; i < tags.length; ++i)
{
    if(tags[i].checked) .....
}
于 2012-11-08T22:18:42.800 に答える
2

ラジオボタンが必要です。

<input type='radio' name='tags' value='[whatever]' />

「1つだけが選択されていることを確認して確認する」必要はありません。そして、

var tags = document.getElementsByName('tags'),
    value = '', i = 0;

for( ; i < tags.length; i++ )
{
    if( tags[i].checked ) {
        value = tags[i].value;
        break;
    }
}
于 2012-11-08T22:36:29.330 に答える
-1

頭のてっぺんから...チェックボックスが1つだけ選択されている場合は、document.form1.tagsが配列ではない可能性があります...

于 2012-11-08T22:16:25.487 に答える