JavaScriptでコードを変数で指定し入力する方法とは?

このQ&Aのポイント
  • JavaScriptを使用して、コードを変数で指定して入力する方法を教えてください。
  • 親から子へ値を代入する際にfor文を使用したいが、eval関数ではエラーが発生するため、他の方法があれば教えてください。
  • JavaScriptでフォームにテキストを書き入れる方法を教えてください。eval関数やdocumentオブジェクトを使用したが、エラーが発生しました。
回答を見る
  • ベストアンサー

JavaScriptで コードを変数で指定し入力するには

題名が少し変で分かりにくいですが 以下のようなコードを書いています <SCRIPT language="JavaScript"> function win_open(){// var cnt; var to1; var frm1; var i; cnt=25; for(i=6; i<=cnt; i++) { to1="document.hoge.koumoku" + i + ".value"; frm1="self.opener.document.hoge.koumoku" + i + ".value"; ここにto1で指定したテキストボックスに入れる = eval(frm1); } } </SCRIPT> 親から 子を開いて 子のスクリプトで 子のフォームへ親の値を代入したいのですが 25項目あるので 25行書くのもスマートでないから for文でやってみようと思ったのですが 親から値を取る方はeval関数でうまく取得できたのですが このフォーム内のテキストボックスに書く場合 eval関数だと 戻り値を指定するのだから エラーが返ってきます。 かといって document.hoge.koumoku" + i + ".value = eval(frm1); では構文エラーになってしまいました 何か他に関数があるのかよく分からないので 教えて頂けたらと思っています よろしくお願いします

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

  • ベストアンサー
noname#84373
noname#84373
回答No.1

main.html <html><body><form> <input type="text" id="t0"><br> <input type="text" id="t1"><br> <input type="text" id="t2"><br> <input type="button" value="open sub.html" onclick="window.open('sub.html','sub')"><br> <input type="text" id="ta"><br> </form></body> sub.html <html> <body> <form> <input type="text" id="t0"><br> <input type="text" id="t1"><br> <input type="text" id="t2"><br> <input type="button" value="get" onclick="getMain()"><br> <input type="text" id="ta"><br> <input type="button" value="return" onclick="retMain()"><br> <script> function getMain(){ var s=''; for(var i=0;i<3;i++){ document.getElementById('t'+i).value=window.opener.document.getElementById('t'+i).value; s+=window.opener.document.getElementById('t'+i).value+'/'; } document.getElementById('ta').value=s; } function retMain(){ window.opener.document.getElementById('ta').value=document.getElementById('ta').value; } </script> </body>

umadura4747
質問者

お礼

声なき回答ありがとうございます。 おかげで getElementById について勉強できました おかげさまで ばっちり思い通りに作動しました 論より証拠 ありがたい回答でした ありがとうございます。

umadura4747
質問者

補足

こちらも すべてうまくいきましたので締め切ります 本当にありがとうございました。

関連するQ&A

  • JavaScriptでの変数で数値を使った場合の疑問

    JavaScriptでの変数で数値を使った場合の疑問 <form action="sample.cgi" name="fm"> <button onclick="allInput()">全入力</button> <input size="10" type="text" name="hoge1" value=""> <input size="10" type="text" name="hoge2" value=""> <input size="10" type="text" name="hoge3" value=""> ・・・・ <input size="10" type="text" name="hoge30" value=""> </form> 上記のようなフォームがあったとします。 hoge1~hoge30まであるためにうけとる方法をforで受け取りたいのです。 <script Language="JavaScript"> function allInput() { for ( var i = 1; i <=30; i++ ) { document.fm.hoge+i.value = document.fm.hoge1.value; //上のiのところで1から30を文字列としたい } } </script> 内部的には document.fm.hoge2.value = document.fm.hoge1.value; document.fm.hoge3.value = document.fm.hoge1.value; document.fm.hoge4.value = document.fm.hoge1.value; ・・・ document.fm.hoge30.value = document.fm.hoge1.value; のようになっていきばいいのですが・・・ たとえになるかわかりませんが、Perlだと下のように$iの変数を文字列として扱えるのですが・・・ for ($i=1;$i <= 30; $i++){ ${"sample$i"} = param("hoge$i"); } よろしくお願いいたします。

  • javascriptにphpの変数を用いる

    JavaScriptでサブウインドウのフォームから親ウインドウのフォームにデータを送るプログラムを書いています。 親ウインドウのページによって処理を変えているのですが、phpの変数を使うと関数自体がエラーになってしまいます。 どう書くのが正しいのでしょうか?教えてください。 プログラムは下記です。 if(page=="0"){ window.opener.document.form_name.input_name.value=input_data; window.close(); } else{   for(i=1; i<6; i++){     var pagename = "page_"+i;     if(page == pagename){ window.opener.document.<?php echo $_GET[form_name]; ?>.<?php echo $_GET[input_name]; ?>.value=input_data; window.close();   } }

  • javascriptのスタイル指定?

    下記の記述の、「残り」「時間」「分」「秒」にそれぞれスタイルを追加したいです。 ----------------------------- document.tbox01.dspday01.value = "残り"+cnt_hour+"時間"+cnt_min+"分"+cnt_sec+"秒"+cnt_millisec ----------------------------- イメージとしては、下記のように記述して、 ----------------------------- document.tbox01.dspday01.value = "<span class="hoge01">残り</span>"+cnt_hour+"<span class="hoge02">時間</span>"+cnt_min+"<span class="hoge03">分</span>"+cnt_sec+"<span class="hoge04">秒</span>"+cnt_millisec ----------------------------- CSSでスタイルを指定したいのですが、可能でしょうか?

  • ビルダーV.10で”Nullまたはオブジェクトではありません”とは?

     どちらかと言えばjavaScriptnoの問題かもしれませんが、全く同じ計算フォームを左右に2個並べましたが、 計算ボタンをクリックした時左は問題なく右のみタイトルで書いたエラーが出ます。 <!-- function func2() { m=eval(document.frm.m.value); n=eval(document.frm.n.value); o=eval(document.frm.o.value); p=eval(document.frm.p.value); q=eval(document.frm.q.value); r=eval(document.frm.r.value); s=(Math.ceil(Math.ceil((o*q/2+150)/n)*n*2/100)/10); t=(""); if((p>m-350)&&(r>0)){ t=0.4 } z=s+t document.frm.z.value =z; } //--> <body> <INPUT type="button" value="計算" onclick="func2()"> </body> この最初のm=eval(documet.frm.m.value); に上記のエラーが出ます。 左側をコピーしてフォーム名を変えただけですが、どこを直したらいいのでしょうか。詳しい方のご回答お願いいたします。

  • javascriptの入力制限keycode除く

    はじめまして javascript初心者です テキストエリアに数字のみ入力できるようにしたいと思い 以下のとおりソースを記述しました function numCheck(){ var num = document.frm.txt.value; var cnum = num.replace(/[^0-9]/,""); num = cnum; document.frm.txt.value = num; <form name = "frm"> <input type="text" onkeypress="numCheck()" value="txt"> </form> キーコードによる入力制限は考えません あと何が足りないでしょうか? よろしくご教授くださいm(__)m

  • JavaScriptで入力制御&チェックをしたい

    JavaScriptを使ってフォームの質問1の3を答えたら質問2が入力可能なるようにしたです。 name="q2"の形にすると制御できますが、phpでの受け取りが、最後にチェックされた値しか表示されないためname="q2[]"にしたいです。 しかし、name="q2[]"にした時のJS側の記述がわかりません。 name="q2[]"にするとphpの配列でチェックされた値全部を取得できるので、name="q2[]"の形でJSの 修正をしたいのですが、どのように記述すれがいいのでしょうか? なお、JSで難しい場合は、JSではなくPHPの修正でもかまいません。 結果、入力制御、入力チェックもでき、チェックボックスの値すべてがpostでphpに送れればいいです。 現状では下記のようにしています。 どうぞよろしくお願いいたします。 <form id="form1" name="form1" method="post" action="kakunin2.php" > <label for="q1">質問1</label> <p>今回のイベントはどうでしたか?</p> <p> <input type="radio" name="q1" value="よかった" onClick="changeDisabled()" />よかった   <input type="radio" name="q1" value="普通" onClick="changeDisabled()" />普通   <input type="radio" name="q1" value="おもしろくなかった" onClick="changeDisabled()" />おもしろくなかった <br /><span id="q1_error" name="q1_error"></span> </p> <label for="q2">質問2</label> <p>質問1で「おもしろくなかった」とお答えの方に質問です。<br />おもしろくなかった理由は何ですか?</p> <p> <input type="checkbox" name="q2[]" value="退屈だった" disabled="disabled" />退屈だった   <input type="checkbox" name="q2[]" value="時間が長かった" disabled="disabled" />時間が長かった   <input type="checkbox" name="q2[]" value="時間が短すぎた" disabled="disabled" />時間が短すぎた   <br /><span id="q2_error" name="q2_error"></span> </p> <input type="button" name="submit_01" id="submit_01" value="確認" onclick="check()"/> </form> ----------以下JavaScript---------- var frm = document.form1; var q1 = ""; var q2 = ""; var error_flag = ""; //質問1のチェック for(i = 0; i < frm.q1.length; i++){ if(frm.q1[i].checked){ q1 = frm.q1[i].value; } } if(q1 == "") { document.getElementById("q1_error").innerHTML = "質問1におこたえください"; error_flag = "1"; }else{ document.getElementById("q1_error").innerHTML = ""; } //質問2のチェック if(q1 == "おもしろくなかった" ) { for(j = 0; j < frm.q2.length; j++){ if(frm.q2[j].checked){ q2 = frm.q2[j].value; } } if(q2 == "") { document.getElementById("q2_error").innerHTML = "質問2におこたえください"; error_flag = "1"; }else{ document.getElementById("q2_error").innerHTML = ""; } }else{ document.getElementById("q2_error").innerHTML = ""; } if(error_flag !=""){ alert("入力が正しくありません!"); }else{ document.form1.submit(); } } //質問2のチェックボックスを使えるようにするかどうかを設定する function changeDisabled(){ //フォームのオブジェクトを入れておく var frm = document.form1; //質問1で「おもしろくなかった」を選ばれている場合に質問を入力できるようにする if(frm.q1[2].checked) { //チェックが入っていた場合の処理 for(i = 0; i < frm.q2.length; i++){ frm.q2[i].disabled = false; } }else{ //チェックが入っていなかった場合の処理 for(i = 0; i < frm.q2.length; i++){ frm.q2[i].disabled = true; } document.getElementById("q2_error").innerHTML = ""; } } ----------以下PHP(kakunin2.php)での受け取り---------- $q2 = $_POST["q2[]"]; for($i=0; $i<count($_POST["q2"]); $i++){ $q2[$i] = $_POST["q2"][$i] .","; echo $q2[$i]; }

  • javascript

    ある文字を入力して、文字を返すロジックですが、 ボックスを作成して入力を行いたいです。 以下のロジックだと、hogeのvalueに文字を入力すると、文字はボックスに返されますが、 valueをスペースにして、value="" htmlで画面上で、文字を入力して、submitを実行しても、文字は返されません。 文字が引き渡されたないのが原因だと思われますが、 submitでどのようにして文字を引き渡してよいか、教えて頂けないでしょうか。 宜しくお願いします。 <form id="sample"> <input type="text" id="hoge" name="hoge" value="pass" size="30"> <input type="text" id="foo" name="foo" value="" size="100"> <INPUT type="submit" value="変換"> <script language="javascript"> (function () { function test(p){var 省略 charAt(i);}return s;} var elements = document.getElementById('sample').elements; elements['foo'].value = test(elements['hoge'].value); }()); </script>

  • VBscriptの配列変数をJavascriptで使うには

    下記ソースでVBscriptの配列変数をJavascriptで使うにはどうしたらいいでしょうか。 vbscriptで配列stat2(i)に値セット後javascriptで使いたい <script type="text/javascript"> <!-- //===== function test(){ var i; for (i=0;i<9;i++){ document.form1.text1[i].value=<%=stat2(i)%>; <-これだとエラー } } //====== //--> </script>

  • Smarty変数の値をJavascript変数代入

    よろしくお願いします。 SmartyのテンプレートにPHPファイルからassignされた変数を、 Javascriptの変数に割り当てたいと思います。 Smartyのテンプレート内では、デフォルトの設定だと、 {$hoge} として、値をHTMLとして書き出す仕様ですが、 色々な諸事情から、このデフォルト設定を、 {{$hoge}} として、{ を二度重ねないと機能しないように設定変更しています。 そこで、下記のようなJavascriptを実行しても上手くいかず、かなりはまってしまってます。 お助けください。 ※ダメな例 <script type="text/javascript"> var balloonA = {{$hoge}}; document.writeln (balloonA); </script> ※↓これだと当然出力されます。 ※aaaaa と表示される。 <script type="text/javascript"> var balloonA = "aaaaa"; document.writeln (balloonA); </script> なぜ、上の書き方だと変数内の値を取得できないのでしょうか? "{{$hoge}}"や'{{$hoge}}' として試しました。でもだめです。 色々ネットで探しましたが、 {literal} を使って・・・・というのもやりましたが、ダメでした。 そもそも、Smartyのデフォルト設定を {{ に変更しているので関係ないと思います。 ん~~何卒お力をおかしください。

    • 締切済み
    • PHP
  • 変数の名前をループで

    $hoge1 $hoge2 $hoge3 という変数があるとします。 そしてこの変数の中身の数のカウントを1回のループで行いたくて下のようなスクリプトを書きました。 $j=0 for($i=0; $i<3; $i++) { $j++; $aaa='$hoge' . $j; $cnt=count($aaa); print $cnt; } しかしこれだと$task1、$task2、$task3という文字列になってしまい、count関数を使っても1が出力されるだけにしかなりません。 "変数"として認識させることは可能でしょうか?

    • ベストアンサー
    • PHP