-1

少し問題があります。私は大きな初心者の間違いを犯したと思いますが、それを見つけることができません。次のコードでは、フォームの入力を取得しようとしていますが、フォームの外部でも入力を取得しています。何故ですか ?

ここに私のJSコード:

function selectAll(bool){
    var form = document.forms['selectMailing'];
    for(var i=1; i<=form.length; i++) {
        form.elements['select'+i].checked = bool;
    }
}

そしてHTML:

<input type=button value="Select All" onclick="selectAll(true)"/>
<form method=post action="" id="selectMailing" onsubmit="return checkSelect()">
    <input type=checkbox name="select1" value="1" />
    <input type=checkbox name="select2" value="1" />
    <input type=submit value="Spammer" />
</form>

したがって、これを試すと、入力ボタンがある行で JS が「未定義のプロパティ 'checked' を設定できません」というエラーを返します。なぜこのようなことが起こるのですか?フォームを選択すると、フォームの要素と入力ボタンだけに名前がなく、フォームの名前と混同される可能性があります。

ご協力いただきありがとうございます !

私はjqueryについて知っていますが、以前にJavaScriptを学びたいので、唯一の答えが「jQueryを使用する」である場合は、他の誰かを助けてください:)

4

2 に答える 2

2

あなたのフォーム「selectMailing」には3つの入力があります。コードで「form.length」のアラートを出すことで確認できます。最初の 2 つの入力はチェックボックス タイプで、3 番目の入力は送信タイプです。

チェックボックスタイプの入力項目にアクセスするために、このようにJavaScriptを変更します(タイプチェックを使用します)

function selectAll(bool){
var form = document.forms['selectMailing'];
//alert(form.length);
for(var i=0; i<form.length; i++){
     if(form.elements[i].type == "checkbox")
     {
          form.elements[i].checked = bool;
      }
  }
}
于 2013-01-18T11:39:21.927 に答える
0

「i<=form.length」から「=」を削除

于 2013-01-18T11:34:36.527 に答える