- ベストアンサー
プルダウンで現在の年月日を取得する方法
フォーム画面プルダウンメニューにて今日の年月日を自動的に取得表示する方法を探しておりましたら http://okwave.jp/qa2538301.html のANo.2様の回答が丁度教えてほしい事だったのですが、このソースをコピーペーストして検証すると、IE7では問題なく動作するのですが、Firefox2.00.2では年のみ現在の年(2007)を取得してくれません。月と日は問題なく取得されています。 何がいけないのでしょうか?お分かりになる方ご教授いただけますようよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは name属性を数値をするのは好ましくないです先頭にアルファベットをつけてやりましょう <FORM method="post" action="○○.cgi" name="123"> ==> <FORM method="post" action="○○.cgi" name="a123"> forms["123"].(3箇所) ==>> forms["a123"]. if(o[i].value==year+"abc"){ ==>> if(o[i].value==year+"年"){ if(o[i].value==month+"def"){ ==>> if(o[i].value==month+"月"){ if(o[i].value==day+"ghi"){ ==>> if(o[i].value==day+"日"){ 僕の作ったのも載せときますね(^^) <script language=javascript><!-- window.onload=function(){ now = new Date(); yea = now.getFullYear(); mon = now.getMonth()+1; day = now.getDate(); obj1 = document.today.nen; obj2 = document.today.gatu; obj3 = document.today.niti; for(i=0; i<5; i++) { m = i+2005; obj1.options[i] = new Option(m+"年",m+"年"); if(m == yea){ obj1.options[i].selected =true; } } for(i=0; i<12; i++) { n = i+1; obj2.options[i] = new Option(n+"月",n+"月"); if(n == mon){ obj2.options[i].selected =true; } } for(i=0; i<31; i++) { l = i+1; obj3.options[i] = new Option(l+"日",l+"日"); if(l == day){ obj3.options[i].selected =true; } } } //--> </script> </head> <body> <form name="today"> <select name="nen"></select> <select name="gatu"></select> <select name="niti"></select> </form>
その他の回答 (1)
- suzuki-_-
- ベストアンサー率77% (152/195)
問題は下記です year = date.getYear(); getYear()はほとんどのブラウザが1900年からの年数を返します (例:2007年の場合は107) ただ、古いブラウザは2000年問題の1つとして話題にもなりましたが、 2000年までは1900年からの年数を返し、 それ以降は完全な年数(2007)を返してしまうというのもあります そんな問題のあるブラウザにあわせるならば year = date.getYear(); if(year < 2000)year += 1900; に変更でOKです ある程度前途以降のブラウザを対象とするならば year = date.getFullYear(); としても大丈夫だと思います それにしてもIE7ではOKなんですね 新しいブラウザなのにまた不思議な仕様にしているようで・・・
補足
ご回答ありがとうございます。 year = date.getFullYear(); で解決いたしました。 そこで実際に、手持ちのフォームに移行しようと試したのですが、うまく動作してくれません。 例えば、 <FORM method="post" action="○○.cgi" name="123"> <select name="abc">←年 <select name="def">←月 <select name="ghi">←日 と定義されているプルダウンがあると仮定した場合、 http://okwave.jp/qa2538301.html のANo2様のスクリプトを <script language=javascript> window.onload=function(){ date = new Date(); year = date.getYear(); month = date.getMonth()+1; day = date.getDate(); var o=document.forms["123"].elements["abc"].options for (var i=0;i<o.length;i++){ if(o[i].value==year+"abc"){ o[i].selected=true; break; } } var o=document.forms["123"].elements["def"].options for (var i=0;i<o.length;i++){ if(o[i].value==month+"def"){ o[i].selected=true; break; } } var o=document.forms["123"].elements["ghi"].options for (var i=0;i<o.length;i++){ if(o[i].value==day+"ghi"){ o[i].selected=true; break; } } } </script> としてもダメなのでしょうか? 手持ちのフォームに移行する際の注意点をご教授いただけないでしょうか? よろしくお願い致します。