アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のようなフォームに対し、JavaScriptで処理を行おうとしています。

<form name="dateForm" method="post" action="">

<table>
<tr><td>0</td>
<td><input type='text' name='date[]' maxlength='8' size=12 value='20111001'></td>
<td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr>

<tr><td>1</td>
<td><input type='text' name='date[]' maxlength='8' size=12 value='20111002'></td>
<td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr>

<tr><td>2</td>
<td><input type='text' name='date[]' maxlength='8' size=12 value='20111003'></td>
<td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr>
</table>

<input type='text' name='date_0' maxlength='8' size=12 value='20111000'><br><br>

<input type="submit" name="button" value="Check" onClick="send_self();">
<input type="submit" name="button" value="Enter" onClick="set_action();">

</form>


Checkボタン押下で上記の関数を呼び出し、テキストフィールドdate[0]の値を表示すると、(1)では「20111001」と正しい値が表示されますが、(2)では下記のエラーが出てしまいます。

「プロパティ '0' の値を取得できません: オブジェクトは Null または未定義です。」


また、

alert(document.dateForm.elements[0]); // … (3)
alert(document.dateForm.date); // … (4)

とすると、(3)では[object]、(4)では[undefined]と表示されます。

alert(document.dateForm.date_0.value);

はvalueも正しく表示されobjectとしても正しく認識されるので、配列へのアクセスに問題があるように思うのですが…。

問題点と解決法をご存知の方がいらっしゃいましたら、どうぞよろしくお願い致します。m(_ _;)m

A 回答 (2件)

(1)や(2)がどっかにいっちゃってますね



alert(document.dateForm.elements["date[]"][0].value);
でやってください

すなわち同nameのエレメンツがあるときには配列るため添え字が必要で
そうでなくnameがユニークならばダイレクトにアクセスできるということです
    • good
    • 0
この回答へのお礼

編集を繰り返している間に、(1)と(2)を誤って削除してしまったようです。

alert(document.dateForm.elements[0].value); //… (1)
alert(document.dateForm.date[0].value); //… (2)

でした。ご迷惑おかけしてすみません。

form.elements[]はindexだけでなくnameも引数になるんですね。知りませんでした。

お陰様で、無事解決し動くようになりました。
ありがとうございました! (*^-^*)

お礼日時:2011/10/06 20:27

そもそもnameに[]を使っている時点で問題。


<input type='text' name='date[]' maxlength='8' size=12 value='20111001'>
へのアクセスは
document.dateForm.date
ではなく
document.dateForm.date[]
になるのよ
もちろん、これではアクセスできないけど

<input type='text' name='date' maxlength='8' size=12 value='20111001'>
じゃダメなの?

そうすれば
document.dateForm.date[0].value
document.dateForm.date[1].value
document.dateForm.date[2].value
こうやってアクセスできるけど
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
実は、PHPで生成したhtmlファイルでして、その為にnameがこのようになっております。言葉足らずですみません。

でも、お陰様で何が問題だったのかがはっきりと分かり、とてもすっきり致しました。どうもありがとうございました。

お礼日時:2011/10/06 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!