• ベストアンサー

画面項目値の取得について

こんにちは。 Javascriptで以下の記述をしたら1回目のアラートでは 何も表示されず2回目のアラートでは画面項目の値が 表示されました。(正しいのは2回目) 連続でまったく同じalert文を記述しているのに 1回目のアラートと2回目のアラートが異なるのはなぜでしょうか? 【記述内容】 alert(document.form.elements['txt1'].value); alert(document.form.elements['txt1'].value);

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ページの読み込みが終了していないからです。 <script> window.onload=function(){ alert(document.form.elements['txt1'].value); } </script> のように読み込み後に実行するようにすればよいでしょう。 ちなみにdocument.form.elements['txt1']って書き方は古いし あまり美しくないですね できればformにidをふって処理することをお勧めします

関連するQ&A

  • javascript 要素取得

    htmlでチェックボックスを作り、その値をjavascriptで取得したいと思い、 下記のようなプログラムを書きました。 セレクトボックスから複数選択できるようにしたいのですが、 表示されるのは複数選んだ際に一番初めに選択したものだけです。  例) 「あああ」と「いいい」を選ぶと「あああ」のみ表示される。 しかし、これを「あああ.いいい」としたいのです。 できれば、 「あああ  いいい」 と改行できるといいです。 formの中にたくさんの項目があるため、 forのところがうまくいっていないのでしょうか? どなたかよろしくお願いします。 javascript側 function checkbox(){  var str="";  for(i=0;i<document.form1.elements.length;i++){   if(document.form1.elements[i].checked){     if(str != "") str = str + ".";     str = str + document.form1.document[i].value;   }  }  if(str == ""){   alert("入力してください");   return false;  }else{   document.form1.submit();  } } HTML側 <form action="<%=遷移先ページ%>" method="post" name="form1"> <select 複数> <input 複数> <input type="checkbox" name="document" value="・あああ"/>あああ <input type="checkbox" name="document" value="・いいい"/>いいい <input type="checkbox" name="document" value="・ううう"/>ううう <input type="submit" value="Submit" onclick="return checkbox();">

  • JavaScriptのfileオブジェクト(input type="file")の選択を初期化したい

    fileでユーザーが選択したファイルを、未選択の状態にしたいのですができません。 valueプロパティを""にしてもnullにしても、元の値(ファイルパス)が入ったままです。 HTML: <input type="file" name="picture_file"> JavaScript: document.form_main.picture_file.value = ""; alert(document.form_main.picture_file.value); document.form_main.picture_file.value = null; alert(document.form_main.picture_file.value); どうにかして初期化する方法はありますでしょうか?file以外のほかのinput項目は変更せず、また画面遷移もせず実現する必要があります。

  • アンダーバーのname値は取得できないでしょうか?

    Javascriptのname値にアンダーバーは付けない方が 良いのでしょうか? 又、使用した場合、name値を取得する方法はありますか? 値を取得できない例 alert(document.frm1.day_flg.value); 値を取得できる例 alert(document.frm1.dayflg.value); <form name="frm1"> <input type="radio" name="day_flg" value="1" checked> <input type="radio" name="dayflg" value="1" checked> </from>

  • コントロール名の取得方法について

    いつもお世話になっております。 表題の件について早速ご質問なのですが、 例えば・・・ <form name="a"> <input type="text" name="txt01" value="no...1"> <input type="text" name="txt02" value="number2"> <input type="text" name="txt03" value="sono3"> <input type="text" name="txt04" value="その4"> <input type="text" name="txt05" value="これは5番目"> <input type="button" onClick="getControlValue(document.a)"> </form> というフォームがあったとして JavaScriptから <script type="text/JavaScript"> function getControlValue(oForm) { for (i=1;i<=5;i++) { oControlName = i番目のコントロール; // 数字の2桁0埋め処理を使用 alert(oControlName.Name + "の値は" + oControlName.value + "です。"); } return false; } </script> というループの中で上記フォーム(txt**)のコントロールを取得して、その値を取得するには どのような方法を取れば実現できるのでしょうか。 ご存知の方がいらっしゃいましたらお知恵をお借りできれば幸いに存じます。 よろしくおねがいいたします。

  • テキストフォームの未入力チェック

    お世話になります。 Javascriptでテキストフォームの入力チェックを行っております。 テキストフォームにはDBから取得した値が入っており、その値を変更して更新できるプログラムを作ろうとしています。 テキストフォームが未入力だった場合に元の値を入れてPOSTリクエストを投げたいのですが方法が分かりません。 (よく見かける未入力だったらアラートを出すというのは出来るのですが・・・) 以下ソースの抜粋になります。 function check(){ for(i=0; i<document.iform1.length;i++){ if(document.form1.elements[i].value==""){ document.iform1.elements[i].valueに元の値を入れたい。 } } <form name="form1" action="updata.php" method="POST"> <input type="button" name ="save" value="更新" onClick="check()"> </form> 以上、ご教示よろしくお願いいたします。

  • 選択されたラジオボタンの値が取り出せない

    フォームを使って普通のHTMLで記述すれば選択された値が 送られてくると思うのですが、エレメントを作って次のような やり方だと、「2」を選択したとしてもvalueが「1」しか返ってきません。 どうすれば適切に値を取り出すことができるのでしょうか? var element1 = document.createElement("span"); element1.innerHTML = "<input type='radio' name='a' value=1>"; document.body.appendChild(element1); var element2 = document.createElement("span"); element2.innerHTML = "<input type='radio' name='a' value=2>"; document.body.appendChild(element2); ~何かクリックした先でidが「a」のオブジェクトを取得し、選択されてた値を取り出したい~ var ele = document.getElementById("a"); alert(ele.value);←1しか表示されない

  • 次画面への受け渡し

    お世話になります。 1の画面から、2の画面へ遷移します。 1の画面でのボタン押下により、hiddenの内容を2の画面に渡し、2の画面のボタン押下で受け渡しているか確認したいのですが、やり方がわかりません。 下に試したものをのせておきます。 あと、書き方で問題があったり、こうした方がいいという注意もしてくださると助かります。 単純なJavaScriptだと思うのですが、初心者でどうしたらいいかもわかりません。助けてください。 1の画面: <HTML> <HEAD> <script language="JavaScript"> <!-- function selEvent(selID){ document.frmAct.fuseaction.value = selID; alert(selID); } --> </script> </HEAD> <BODY> <form name="frmAct" method="post" action="form_action2.html"> <INPUT TYPE="submit" VALUE="新規登録" onClick="selEvent(1);"> <INPUT TYPE="submit" VALUE="ID検索" onClick="selEvent(2);"> <INPUT TYPE="hidden" NAME="fuseaction" VALUE=""> </form> </BODY> </HTML> 2の画面: <HTML> <HEAD> <script language="JavaScript"> <!-- function kakunin(){ alert(document.frmAct.fuseaction.value); } --> </script> </HEAD> <BODY> <form name="frmkaku" method="post" action="xxx.html"> <INPUT TYPE="button" VALUE="確認" onClick="kakunin();"> </form> </BODY> </HTML>

  • firefoxでvalue取得に失敗する。

    firefoxでvalue取得に失敗する。 2回パスワードを入れさせるテキストボックスで、 下記のようなhtml,JavaScriptを書いております。 【sample.html】 <html><body> <form action="login.php" name="form1" method="post"> パスワード: <INPUT type="password" name="password" value"> <br> パスワード再入力: <INPUT type="password" name="password2" value=""> <br> <BUTTON type="button" name="btn1" id="btn1" onclick="clickbtn();">更新</button> </form> </body></html> 【sample.js】 function clickbtn() {  alert(form1.password.value);  alert(form1.password2.value);   if(form1.password.value != form1.password2.value){   alert("パスワードが違います");   return 1;   } } ボタンを押した時、IEでは意図通りにpasswordとpassword2に書かれた内容を 表示してくれるのですが、FireFoxではエラーがでます。 エラーコンソールの内容は「form1.password undefined」です。 パスワード用テキストボックスタグに id=password を追加、 パスワード再入力用のテキストボックスタグ id=password2 を追加する事で 意図した動作をfirefoxでも得る事が出来ましたが、 これはJavaScriptは、firefoxではタグをnameではなくidで区別すると解釈して良いのでしょうか? また、id値を追記する事で動きはしたのですが、エラーコンソールに 「グローバルスコープでIDまたはname属性値により要素を参照しています。  変わりにW3C標準のdocument.getElementByID()を使用してください。」 という警告が出まして、「id値追記するだけでよいのか?」と悩んでいます。 alert(document.getElementByID(”form1.password”)); という記述をしても警告が消えないので、警告文の通りにするのが正しいとも思えません。 firefoxへの対応を皆様がどのようにされているのか、教えていただきたく質問いたします。 宜しくお願いします。

  • PHPで取得したデータの扱い

    653と申します。宜しくお願いいたします。 現在、PHPとJavaScript, HTMLを用いてDBを検索するアプリケーションを 作成中です。 ------------------------------------------------------- <?php <省略> $val1 = [あるselect文で検索されたユニークのデータ]; $val2 = [あるselect文で検索されたユニークのデータ(※上記select文と異なる)]; echo($valu1); echo($valu2);  <省略> ?> <script language="javascript"> <!-- Begin alert(<?=$value1?>); alert(<?=$value2?>); <省略> // End --> </script> <以下省略> ------------------------------------------ 上記のようなソースを書きました。 PHP内のecho関数で画面に表示させると $value1 ⇒ '950'、$value2⇒ '410'と出るとします。 この値は実際にDBに格納されているデータと同じ為、正常値と みなします。 しかしJavaScriptないのAlertで表示させると $value1 ⇒ '950'、$value2⇒ '299'と出てしまいます。 この(特に$value2)データの内容が変わってしまうのは なぜでしょうか? $value1, $value2の順番を替えても同じ結果になります。 PHPで取得したデータを格納した変数をJavaScript内で 使用するには何か特別な使用方法などがあるのでしょうか? もしくは上記の使い方が間違っているのでしょうか? ずっと悩んでます・・・(泣)

  • 複数のテキストボックスの値の取得について

    複数のテキストボックスの値、取得に関して質問させて下さい。 画面に20個のテキストボックスが存在し、 それぞれ id に txt0 ~ txt19を設定しています。 (javascriptにてループで作ってます) for(ii=0; ii<20; ii++){ (略) document.write("<input id='txt" + ii + "' type='text' />"); (略) } 登録ボタン押下後に、上記20個のテキストボックスの値を取得し、 特定の文字だった場合のみ処理を行います。 この処理もループで行いたいのですが、 変数名 txt'i'.value  の 'i'の部分だけを変更したいのです。(iは 0~19) 変数名の一部を変数にすることは可能でしょうか? 配列にできれば話は簡単なのですが・・・配列にできるでしょうか? with (document.form1) { for(ii=0; ii<20; ii++){ (略) tempTxt = txt0.value; ←右辺の値をiiの値と共に txt0.value から txt19.value に変化させたい。 (略)            ("txt" + ii + ".value" では文字列になってしまい・・) if(tempTxt == "ABC"){ (略) } } } 別の手段でもかまわないのですが、何かよい方法が ありましたら、ご回答お願いします。

専門家に質問してみよう