javascriptについてご教授ください。

formでid="required1"~"required13"までのtype="text"を作りvalueを取り出したかったのですが、
3回実行した後に.lengthが増えていってしまいオブジェクトが存在しないためエラーで終了します。

function prechk(){
var required=new Array(3);
for(i=1;i<=required.length;i++){
 required[i]=document.getElementById("required"+i).value;
 alert(required[i]);
}
}
私の考えではnew Array(3)なのでfor文の.lengthは3になりループを抜けるかと考えたのですができませんでした。
お力添えをいただければ幸いです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/09/04 14:42:14
  • 終了:2012/09/11 14:45:02

回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4365ベストアンサー獲得回数18012012/09/04 16:04:16

javascript の配列は、ゼロ始まりです。
しかも、サイズを超えた添え字のところに書きこむと、自動で拡張します。

なので、期待通りに動かすとしたら、こうなります。

function prechk(){
    var required=new Array(3);
    for(i = 0 ; i < required.length ; i++) {    // ★1
        required[i]=document.getElementById("required"+(i+1)).value;    // ★2
        alert(required[i]);
    }
}

★1 : ループは、0から required.length - 1 まで。
★2 : i が0から始まるので、id を決めるときに+1する。

id:ku__ra__ge No.2

ku__ra__ge回答回数118ベストアンサー獲得回数402012/09/04 16:34:20

配列の要素数をループ条件に使おうとせず、素直に1~3までループしてはどうでしょうか?

function prechk(){
	var required = new Array(); // 長さ0の配列を作成
	for(i=1; i<=3; i++){
		var val = document.getElementById("required"+i).value;
		required.push(val); // value値を配列に追加
		alert(val);
	}
}

javascriptの配列はpushを利用して、添え字を意識せずに要素を次々に追加してゆくことができます。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません