代入の基礎

このQ&Aのポイント
  • 「n」の値によって年月日の値を変更する方法と、特定の条件下での代入方法について質問があります。
  • 「n=2」の場合は今日の日付を表示し、それ以外の場合は最初に表示された値を表示したいそうです。
  • 具体的な解決策や助言を求めています。
回答を見る
  • ベストアンサー

代入の基礎?

あけましておめでとうございます。 下記は「n」の値によって年月日の値を変更しようとしています。n=2の時は今日の日付を入れます。これはOK。それ以外の時は「最初に年月日のフォームに表示された値」を「mydate」に代入したものを表示したいのですが、下記だと直前に年月日に表示されたものになってしまうようです。基本的なこととは思いますが、助言いただけないでしょうか。 function set( n ) { mydate = document.myFORM.年月日.value if(n == 2) {document.myFORM.年月日.value = "今日の日付を入れる"}; else {document.myFORM.年月日.value = mydate} }

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

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

確かにこのソースでは、mydateは、set(n)が呼ばれたときに年月日に入っていた値が入ります。 このset(n)関数が動いた時に表示されていた値が格納されることになるからです。 「最初に表示された値」というのが、どのタイミングで入るものであっても、一つのテキストボックスでは対応しきれません。 初期値を格納しておくhiddenフォームを一つ用意しましょう。 その上で、最初に年月日フォームに入力された値を、そのhiddenフォームにコピーします。 コピーする関数を呼び出すのは、テキストボックスのonChange()イベントでいいと思います。 最初の入力かどうかを判定するのは、hiddenに値が入っているかどうかで判定すればいいかと思います。 function setValue(){ // hiddenの値が空だったら、初回入力 if(document.myForm.hidden年月日.value == ""){   //hidden項目に年月日の値をコピー document.myForm.hidden年月日.value = document.myForm.年月日.value } } set(n)関数は下記のように変更します。 function set(n){ mydate = document.myForm.hidden年月日.value; if(n == 2){ document.myForm.年月日.value = "今日の日付"; }else{ document.myForm.年月日.value = document.myForm.hidden年月日.value; } } HTMLは、 <form name="myForm"> <input type="text" name="年月日" onChange="setValue()"> <input type="hidden" name="hidden年月日"> <input type="button" value="今日の日付" onClick="set(2);"> <input type="button" value="初期値の日付" onClick="set(1);"> </form> という感じです。 動作確認はしていませんが、考え方はこのようになるかと。 がんばってください。 # formの名前「年月日」は、このままですか? # 2バイト文字は使わない方がいいかと思いますよ。

関連するQ&A

  • window.openの書き方

    初歩的なことかと思いますが、下記の★のところに前行の「n」の値を入れるにはどのように書いたら良か教えていただけますか。 function set() {  n = document.myFORM.moto.value;  window.open('sample.asp?zip=★') }

  • 選択したたラジオボタンの値をSUBMITボタンに

    選択したたラジオボタンの値をSUBMITボタンの名前として自動的に替えたいのですが、助言をいただけますか。 イメージは下記です。★の部分に、クリックごとにradioの値を入れたいのです。 <script Language="JavaScript"><!-- function set() { n = document.myFORM.Radio.value; } // --> </script> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onclick="set()" CHECKED> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★"></form>

  • ラジオボタンでreadonlyの切替え

    ラジオボタンでreadonlyの切替えをしたいのですが、どうもうまくいきません。ラジオボタンの値の拾い方でつまづいているようです。 <script Language="JavaScript"> <!-- function set( n ) { document.main.Submit.value = document.main.elements[n].value; document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor; document.main.年月日.value = 'やっほ'; document.main.年月日.style.background = 'white'; if (document.main.shori.value = '複写'){ document.main.年月日.readOnly = ''; alert(document.main.shori.value); } else if (document.main.shori.value = '修正'){ alert(document.main.shori.value); document.main.年月日.readOnly = ture;} } // --> </script> <FORM NAME=main ACTION="★" METHOD="POST"> <INPUT TYPE="RADIO" NAME="shori" VALUE="修正" CHECKED onClick="set(0);">修正 <INPUT TYPE="Radio" NAME="shori" VALUE="複写" onClick="set(1);">複写<BR> <INPUT TYPE="text" NAME="年月日" SIZE="20" VALUE="" readonly style="background-color : #FFCCCC;" style="ime-mode: inactive"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

  • javaスクリプトによりフォーム入力

    javaスクリプトによりフォーム入力を製作中です。 ラジオボタン、チェックボックス、プルダウン選択を選択すると、同ページのテキストエリアにそれらを選択した時点で反映されるというものです。 html構造として table/ 項目1 項目2 項目3 項目4 ・ ・ ・ ------ テキストエリア ------ /trable となっていきます。 var copytoclip=1 function CopyAll(mytext) { var tempval=eval("document."+mytext) tempval.focus() tempval.select() if (document.all&&copytoclip==1){ therange=tempval.createTextRange() therange.execCommand("Copy") setTimeout("window.status=''",1800) } } function setChars(form) { if(form.n1[0].checked) { str1 = document.myform.n1[0].value } else if(form.n1[1].checked) { str1 = document.myform.n1[1].value } else if(form.n1[2].checked) { str1 = document.myform.n1[2].value } else { str1 = "テキストテキスト" } /*下がテキストエリアへ反映される*/ document.myform.mytext.value = "hogehoge" + str1 +・・・・ + "\n\n" } といったものです。 【苦戦しているところ】 選択項目がひとつしかない場合に、チェック項目を作成しても テキストエリアへ反映されません。 -・--・--・--・--・- また、これとは別によりいいサンプル等ありましたら、教えていただけるとありがたいです。

  • テキストボックスの値で配列の値を求めるには?

    やりたいと思っているのは、 (1) "INPUT" の値を入力。 (2) "koteichi" は他からの参照値。 (3) "goukei"に(1)と(2)の合計値。 (4) "total" に(3)の値に該当する配列の値。 (実際には配列の値を代入した式の答え。) という流れになります。 (3)まではなんとか分かるのですが、 (4)はどのように配列の値を代入すればいいのかが 分かりません。  なにぶん最近始めた初心者なので不規則な値は配列を使えばいいと解釈したのですが、まったく使い方を間違えているのでしょうか? こういった場合は別のやり方があるのでしょうか? どなたかよろしくお願いします。 <SCRIPT language=JavaScript1.1> <!-- rank = new Array(6); rank[0]=0; rank[1]=5;[rank2]=8;[rank3]=12;rank[4]=16;rank[5]=22; function calc(){ document.myform.goukei.innerText = eval(document.myform.INPUT.value) +eval(document.myform.koteichi.value); } // --> </SCRIPT> </HEAD> <BODY> <form name="myform"> <INPUT size="20" type="text" name="INPUT" value="0" onchange="calc()"/>+<INPUT size="20" type="text" name="koteichi" value="10">=<INPUT size="20" type="text" name="goukei" value="0"> <INPUT size="20" type="text" name="total" value="0"> </FORM> </BODY>

  • プルダウン2つで別項目に値を代入したい.その2

    同じような質問ですみません。プルダウン2つで別項目に値を代入する方法のアドバイスを参考にこんなの作ったんですがうまくいかないです。どこがおかしいですか? <html> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v2=document.getElementById('s2').value; var rslt; if (v1==1 && v2==1) { rslt=36; } else { if (v1==1 && v2==2) { rslt=29; } else { if (v1==1 && v2==3) { rslt=22; } else { if (v1==1 && v2==4) { rslt=14; } else { if (v1==1 && v2==5) { rslt=7; } else { if (v1==1 && v2==6) { rslt=0; } else { rslt='?'; }} document.getElementById('txt').value=rslt; } </script> <body> <select id="s1" onChange="hoge()"> <option value="1">1 <option value="2">2 <option value="3">3 <option value="4">4 </select>   <select id="s2" onChange="hoge()"> <option value="1">1 <option value="2">2 <option value="3">3 <option value="4">4 <option value="5">5 <option value="6">6 </select><p> <input type="text" id="txt" value=""> </body> </html>

  • 選択によってsubmitボタンの色を変える

    先程関連質問の回答をいただいた者なのですが、ラジオボタンの内容によってsubmitボタンの色を変えるところまで実現したいのですが、東京ならsubmitボタンはピンク、大阪ならsubmitボタンはブルーにしたいと思います。この場合は、submitボタンのところでIF文で分岐させればいいものでしょうか。 <html> <head> <script Language="JavaScript"> <!-- function set( n ) { document.myFORM.Submit.value = document.myFORM.elements[n].value; } // --> </script> </head> <body onLoad="set(0);"> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onClick="set(0);" STYLE="background-color:pink" checked> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪" onClick="set(1);" STYLE="background-color:blue"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★" STYLE="background-color:pink"> </form> </body> </html>

  • hiddenフォームのvalueを自動生成したいのですが...

    JavaScriptで生成した値を、同じページの中にあるinput type=hiddenフォームのvalueの値として使用したいのですが、うまく行きません。 普通のinputタグであれば、 <SCRIPT Language="JavaScript"> <!-- function SetOrderId() { myDate = new Date(); Year = new String(myDate.getFullYear()); Month = new String(myDate.getMonth()+1); Day = new String(myDate.getDate()); if ( Day.length == 1 ) Day = "0" + Day; document.forms[0].OrderId.value = Year + "-" + Month + "-" + Day } //--> </SCRIPT> <BODY onLoad="SetOrderId()"> <INPUT NAME="OrderId" TYPE="TEXT" onClick="SetOrderId()"> で、ページを開いたときにOrderIdフォームに値が代入されているのですが、 <input type=hidden name="OrderId"> としたときには、上記のスクリプトで生成した値がinput type=hiddenのvalueに設定されず、困っています。 どうすればinput type=hiddenのvalueの値にJavaScriptで生成した値を代入できるのでしょうか?

  • プログラムを短くしたい

    if ((document.myForm.first.selectedIndex==0) && (document.myForm.second.selectedIndex==6)) {n += 11}; else if ((document.myForm.first.selectedIndex==1) && (document.myForm.second.selectedIndex==0)) {n += 12}; else if ((document.myForm.first.selectedIndex==1) && (document.myForm.second.selectedIndex==2)) {n += 18}; 上記のようなコードで 「document.myForm.first.」など同じ文が続く場合、 この部分を短縮、もしくは省略して記述することは出来ないでしょうか?

  • 日付のJavaについて質問

    日付のJavaについて質問です。 <script> function makedate(){ now = new Date(); Day = 12 * 60 * 60 * 1000; now.setTime( now.getTime() + Day ); document.write("<select name=year>"); for(i = 2016; i <= 2017; i++){ Set_year = now.getYear(); Set_year = (Set_year < 2000) ? Set_year+1900 : Set_year ; if(i == Set_year){ document.write("<option value="+i+" selected>"+i); }else{ document.write("<option value="+i+">"+i); } } document.write("</select> 年"); </script> 上のような日付のプログラムを制作してみたいと思っています。 for以下のところですが、2016年⇒17年⇒18年...と年を越しても自動的に値を取得するにはどうすれば良いのでしょうか。 教えて頂ければと思います。

    • 締切済み
    • PHP