
下記のようなフォームに対し、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
No.2ベストアンサー
- 回答日時:
(1)や(2)がどっかにいっちゃってますね
alert(document.dateForm.elements["date[]"][0].value);
でやってください
すなわち同nameのエレメンツがあるときには配列るため添え字が必要で
そうでなくnameがユニークならばダイレクトにアクセスできるということです
編集を繰り返している間に、(1)と(2)を誤って削除してしまったようです。
alert(document.dateForm.elements[0].value); //… (1)
alert(document.dateForm.date[0].value); //… (2)
でした。ご迷惑おかけしてすみません。
form.elements[]はindexだけでなくnameも引数になるんですね。知りませんでした。
お陰様で、無事解決し動くようになりました。
ありがとうございました! (*^-^*)
No.1
- 回答日時:
そもそも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
こうやってアクセスできるけど
ご回答ありがとうございます。
実は、PHPで生成したhtmlファイルでして、その為にnameがこのようになっております。言葉足らずですみません。
でも、お陰様で何が問題だったのかがはっきりと分かり、とてもすっきり致しました。どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
formのtextフィールドが認識さ...
-
Formのシリアライズができない
-
チェックボックスがIE8で正し...
-
▲▲JavaScriptに詳しい人見てく...
-
JavaScriptの「.querySelectorA...
-
VBSでの自動ログイン
-
画面表示とともにtableの指定の...
-
クリックしたラジオボタンの行...
-
クリックした行の背景色の変更
-
BBSのアイコンをプルダウンメニ...
-
画面の2重起動をチェックする...
-
ラジオボタンが選択されたらテ...
-
インラインフレームを利用した...
-
変数に入っているのに、メール...
-
JSPとJavaScriptの連携について...
-
javascriptで文字を拡大・縮小...
-
onchangeイベントを強制的に発...
-
新しくフォルダを作成したい
-
同じ名前のセレクトがある場合...
-
リストボックスに動的な初期設...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックス付きのテーブ...
-
画面表示とともにtableの指定の...
-
JavaScriptの「.querySelectorA...
-
Javascriptの電卓で最初の何も...
-
複数のselect値で1つも選択され...
-
ボタンクリックでフォーカス移動
-
テーブル内のチェックボックス...
-
クリックした行の背景色の変更
-
jQueryで合計を出したい
-
文字数を数える際に空白、改行...
-
インラインフレームを利用した...
-
ラジオボタンを一括で操作する...
-
画面の2重起動をチェックする...
-
メールフォームについて
-
.NETを使用せずに、ASP・VBScri...
-
SCRIPT及びソースを教え...
-
同一nameの input type="text"...
-
テーブルの一部を入力フィール...
-
フォームの入力チェック方法
-
localStorageでのcheckbox制御
おすすめ情報