人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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になりループを抜けるかと考えたのですができませんでした。
お力添えをいただければ幸いです。

●質問者: komeko04
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3

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する。


2 ● ku__ra__ge

配列の要素数をループ条件に使おうとせず、素直に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を利用して、添え字を意識せずに要素を次々に追加してゆくことができます。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ