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

JavaScriptで質問です。

配列の値を参照しようとすると以下のエラーが表示されます。
「'value'はnullまたオブジェクトではありません。」

エラーになる部分
--------------------------------------------------------
var order = document.getElementsByName("order[]");

for (var i = 0; i <= 10; i++) {
params['list['+ i + '][order]'] = order[i].value;
}
--------------------------------------------------------

ただ、alertで確認するときはきちんと値をとってこれています。
--------------------------------------------------------
var order = document.getElementsByName("order[]");

for (var i = 0; i <= 10; i++) {
alert(order[i].value);
}
--------------------------------------------------------
この場合はきちんとメッセージに意図した値が表示されます。


何か対処方法、原因がわかるかたご回答お願いします。

●質問者: Ryo0524
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●0ポイント

params['list['+ i + '][order]'] = order[i].value;


この行で

params['list['+ i + '][order]']とやってますが

このとき orderには 何が 入っているのでしょうか?


このorderが原因で エラーになってる感じがしますが。


2 ● じゅぴたー
●0ポイント

配列paramの添え字が間違っているのではないでしょうか?

下記のようにしてみてはどうでしょう?

var order = document.getElementsByName("order[]");

for (var i = 0; i <= 10; i++) {
 params[list[i][order]] = order[i].value;
}

3 ● TransFreeBSD
●100ポイント ベストアンサー

とりあえず、IE8,Chromeにおいて、下記で問題は発生しません。id:Lhankor_Mhyさんの言う通り、余所に問題があると思います。


<html><body><form>
<input type="text" name="order[]" value="0"><br>
<input type="text" name="order[]" value="1"><br>
<input type="text" name="order[]" value="2"><br>
<input type="text" name="order[]" value="3"><br>
<input type="text" name="order[]" value="4"><br>
<input type="text" name="order[]" value="5"><br>
<input type="text" name="order[]" value="6"><br>
<input type="text" name="order[]" value="7"><br>
<input type="text" name="order[]" value="8"><br>
<input type="text" name="order[]" value="9"><br>
<input type="text" name="order[]" value="10"><br>
</form><script>
var params = {};
var order = document.getElementsByName("order[]");
for (var i = 0; i <= 10; i++) {
 params['list['+ i + '][order]'] = order[i].value;
}
for (var i in params) {
 alert(i + ": " + params[i]);
}
</script></body></html>
◎質問者からの返答

回答ありがとうございます。

実際はRubyとJavaScriptを連動して開発をしており、for文のiの最大値は本当のソースではRubyから送った変数を参照するようになっています。

この変数の値が配列の添字の最大値よりも大きかったため、存在しない配列のvalueを取得しようとしていたことでエラーになっていたようです。

初歩の初歩でミスをしていました。

回答してくださったみなさん、ありがとうございました。

関連質問

●質問をもっと探す●



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