こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

配列の格納

現在、PHPで生成したhiddenフィールドに、Valueを設定しない記述(配列のような形式)を行い、JavaScriptにて値を代入するプログラムを作っています。
エラーは出ていないようなのですが、値が代入されません。Alertでみると、undefinedというメッセージが出ています。hiddenフィールドへの格納方法をご教授ください。

<ソース>(抄)
function user_num() {
var i=1,l=0, num = document.getElementById('users').length;
document.user_select.user_no =new Array(num);
while(num > 0){
document.getElementsByName('user_no[i]').value = document.getElementById('users').options[l].value;

alert(document.getElementsByName('user_no[i]').value);
num--;
i++;
l++;
}
}
(中略)
hiddenフィールド生成文

<?php
$n=1;
while($i){
print '<input type="hidden" name="user_no[';
print $n;
print ']"';
print ' id="user_no[';
print $n;
print ']">';
$i=$i-1;
$n=$n+1;
}
?>

投稿日時 - 2009-11-11 10:02:32

QNo.5438789

すぐに回答ほしいです

質問者が選んだベストアンサー

#1です。
サンプルは動いた。うまくはいきません。ではどうしたらいいのかサッパリわからないです。

(それを配列と呼ぶかどうかはわかりませんが)nameとvalueが設定されたinputがform配下にあればformの送信時に送られるハズなんですけどね~。

それとも送信ではなく受け取り側(次のページ)に問題があるのでしょうか?(送信できたかどうかはformのmethodをgetにしておけば簡単に確認できますが)

とりあえずサンプルが動いたことで続きを自分で解決するなら質問を終了する、そうでなければ第三者がわかるような情報を捕捉するかしてくださいませ。

投稿日時 - 2009-11-11 12:43:13

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

nameに[n]を付けた配列みたいな記述が配列として扱えるのはphpの勝手な拡張ですので、php以外では単なる文字列となります。
なので、javascriptで扱う場合はあくまで文字列にしてやる必要があります。
また、getElementsByNameというのは常に配列を返してくるので、それが必ず1つしか無いケースでは0番目にアクセスします。

以下、試してないけどサンプル。
function user_num() {
var i=1;
while(1){
var o= document.getElementsByName('user_no['+i+']')[0];
if(! o) break;
o.value = document.getElementById('users').options[i-1].value;
alert(o.value);
i++;
}
document.user_select.user_no = new Array(i);
}

最後のところ document.user_select.user_no には新しい配列を代入してるけど何に使ってるのかわからないのでとりあえずそのままにしてます。

投稿日時 - 2009-11-11 10:50:47

補足

早速のご回答ありがとうございます。サンプルうまく動きました。

最終的には、配列(文字列)user_no[1]、user_no[2]をpostまたは、getで
次のページに渡してあげたく思っています。そのため、user_no[1]などを
hiddenフィールドで生成しているのですが、うまくいきません。

投稿日時 - 2009-11-11 11:05:28

あなたにオススメの質問