配列の値を参照しようとすると以下のエラーが表示されます。
「'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);
}
--------------------------------------------------------
この場合はきちんとメッセージに意図した値が表示されます。
何か対処方法、原因がわかるかたご回答お願いします。
とりあえず、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>
params['list['+ i + '][order]'] = order[i].value;
この行で
params['list['+ i + '][order]']とやってますが
このとき orderには 何が 入っているのでしょうか?
このorderが原因で エラーになってる感じがしますが。
提示されていない部分のソースに問題がある気がする
for (var i = 0; i <= 10; i++) {
alert(params['list['+ i + '][order]']);
alert(order[i].value);
params['list['+ i + '][order]'] = order[i].value;
}
って書いたら何が起こるんだろ。ソース見てる感じだと、PHPに配列渡したいのかな、と思ったり。
「'order[...].value' は Null またはオブジェクトではありません。」
です。MSはやっぱりなんだか外れたメッセージだ。
input要素をa要素に変えてvalueをなくしても、単にnullが代入されてエラーにはならなかったです。
ちなみにchromeだと
「Uncaught TypeError: Cannot read property 'value' of undefined」
こっちの方がまだわかる。ただ、コンソールのメッセージがコピペできん...