プロが教えるわが家の防犯対策術!

フォーム画面プルダウンメニューにて今日の年月日を自動的に取得表示する方法を探しておりましたら
http://okwave.jp/qa2538301.html のANo.2様の回答が丁度教えてほしい事だったのですが、このソースをコピーペーストして検証すると、IE7では問題なく動作するのですが、Firefox2.00.2では年のみ現在の年(2007)を取得してくれません。月と日は問題なく取得されています。
何がいけないのでしょうか?お分かりになる方ご教授いただけますようよろしくお願いいたします。

A 回答 (2件)

問題は下記です



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>

としてもダメなのでしょうか?
手持ちのフォームに移行する際の注意点をご教授いただけないでしょうか?
よろしくお願い致します。

補足日時:2007/03/12 17:04
    • good
    • 0

こんにちは



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>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!