特定の日にメッセージを表示するプログラムがうまく動作しない

このQ&Aのポイント
  • 特定の日にメッセージを表示するプログラムがうまく動作しないと困っています。外部ファイルから参考にしたプログラムを実行していますが、意図した通りに文章が表示されません。
  • 動作確認のために指定した日では正しくメッセージが表示されますが、他の日では通常通りに文章が表示されてしまいます。
  • どのようにすれば指定した日にだけ、指定した通りの文章が表示されるようになるのでしょうか?
回答を見る
  • ベストアンサー

うまく動きません;

特定の日にメッセージを表示するプログラムを、本を参考に書いたのですが、どうも挙動がおかしくて困っています。(ちなみに外部ファイルです) ―――――――――――――――――――――――― nowDt = new Date(); YY = nowDt.getFullYear(); MM = nowDt.getMonth() + 1; DD = nowDt.getDate(); if(YY == 2006){ if(MM == 10) if(DD == 31) document.write("<center><font color='#ff6666' size='+1'><b><u>"); document.write("今日は10月31日です"); document.write("</u></b></font></center>"); } ――――――――――――――――――――――――  動作確認のため、if(MM == 9)、if(DD == 15)としてHTMLファイルから読み込ませると意図した通り(下線付き太字で薄いピンク色の一段階大きいフォント)のメッセージが表示されるのですが、いざif(MM == 10)、if(DD == 31)にして読み込ませると文章のみが通常通りに表示されてしまいます。  どうしたら指定した日にだけ、指定した通りの文章が表示されるようになるんでしょうか?

  • rusya
  • お礼率56% (167/295)

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

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

内側のif分のかっこ{ }が省略されてますが、 きちんとかっこを書いた場合以下のように書いたのと同じです。 nowDt = new Date(); YY = nowDt.getFullYear(); MM = nowDt.getMonth() + 1; DD = nowDt.getDate(); if(YY == 2006){   if(MM == 10){     if(DD == 31){       document.write("<center><font color='#ff6666' size='+1'><b><u>");     }   }   document.write("今日は10月31日です");   document.write("</u></b></font></center>"); } これでどこがおかしいのかは分かると思います。

rusya
質問者

お礼

早々の回答ありがとうございます。急いでいたので助かりました。 やっぱり{}だったんですね・・・・・・本に書かれていなくて、誤植かな? と思ったんですが。

関連するQ&A

  • 月の表示

    HPで今月を表示したいです。 数字がローマ字ですが、漢字で表示したいです。 例えば10月が十月で表示する事が可能ですか? <SCRIPT language="javascript"> dd = new Date(); yy = dd.getYear(); mm = dd.getMonth() + 1; dd = dd.getDate(); if (yy < 2000) { yy += 1900; } if (mm < 10) { mm = "0" + mm; } if (dd < 10) { dd = "0" + dd; } document.write("<FONT size='-1'>"); document.write(mm + "月" ); document.write("</FONT>"); </SCRIPT> 教えてください! お願いします。

  • ジャバスクリプトでカレンダーを表示の際に3月をMarchと表示したい

    よろしくお願いします。 JavaScriptのカレンダーのタグでどうしても分からないことがあり質問します。 普通は、今日の日付だと、 2005年 3月17日 木曜日 となりますが、 これを March 2005 17 Thursday としたいです。 下記はいま悩んでいるタグです。 <SCRIPT Language="JavaScript"> <!-- ar1=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); kyou = new Date(); yy = kyou.getFullYear(); mm = kyou.getMonth() + 1; dd = kyou.getDate(); dan = kyou.getDay(); da = ar1[dan]; ym = mm + ""+ yy + "" dd1 = dd + "" da1 = "(" + da + ")" document.write("<table border=0 ><tr>"); document.write("<td background='.gif' WIDTH=50 HEIGHT=50>"); document.write("<table border=0 WIDTH=79 HEIGHT=89><tr>"); document.write("<td ALIGN='center'><font size=2>"); document.write(ym); if (dan == 0 ){document.write("<font color=#FF3366>")}; if (dan == 6 ){document.write("<font color=#00CCCC>")}; document.write("<br><font size=4><b>") document.write(dd1); document.write("</b></font><br>") document.write(da1); if (dan == 0 || dan == 6){document.write("</font>")}; document.write("</font></td></tr></table>"); document.write("</td></tr></table>"); //--> </SCRIPT> いろいろタグを触りましたが、 3 2005 17 (Thursday) というここまでしか分かりません。 12ヵ月分のタグをどこに入れればいいでしょうか? どうかアドバイスをください。 よろしくお願いします。

  • 時間の引き算をするには…?

    ホームページ制作でJavascriptを使っています。 ホームページ閲覧者のコンピュータ内部の時計を利用したJavascriptなのですが、 日付の表示でお聞きしたいことがあります。 以下のプログラムは、2003-11-07のような表示をするようなJavascriptを組んでいるのですが、 0時00分から0時59分までは前日の日付を表示するJavascriptにしたいのです。 この場合、どのようにすればよいのでしょうか? よろしくお願いします ============================================================ <SCRIPT language=JavaScript> <!-- xx = new Date(); yy = xx.getYear(); mm = xx.getMonth() + 1; dd = xx.getDate(); if ( yy < 2000 ) { yy += 1900; } if ( mm < 10 ) { mm = "0" + mm; } if ( dd < 10 ) { dd = "0" + dd; } document.write( yy + "-" + mm + "-" + dd ); // --> </SCRIPT>

  • 好きな場所に表示したい。

    以下のソースは購入した本のサンプルです。 これによると、日付の表示が一番上に出ます。好きな場所に表示するのは、どうしたらよいでしょか。初心者なので、よろしくお願いします。 <html> <head> <title>JavaScript sample</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script language="JavaScript"> <!-- //WEEK配列を用意して、月~土の文字を記憶させます。 WEEK=new Array(7); WEEK[0]="日"; WEEK[1]="月"; WEEK[2]="火"; WEEK[3]="水"; WEEK[4]="木"; WEEK[5]="金"; WEEK[6]="土"; today=new Date(); //現在の時間を持つDateオブジェクトを作成します YY=today.getFullYear(); //4桁の西暦をYYに代入 MM=today.getMonth(); //月をMMに代入 MM = MM + 1; //getMonth()は0~11なので、1を足します if(MM < 10){ //MMが10未満の時 MM = '0' + MM; //先頭に0をつけて2桁にします。 } DD=today.getDate(); //日付をDDに代入 if(DD < 10){ //DDが10未満の時 DD = '0' + DD; //先頭に0をつけて2桁にします。 } WDay=today.getDay(); //WDayに曜日を代入。WDayの値は //0~6となり、0が日曜、6が土曜となります。 JWDay = WEEK[WDay]; //WEEKのWDay番目の値が日本語の曜日となります。 //document.writeを使って、日付を表示します。 document.write("<div style='font-size:12px; color:#333333'>今日は"+YY+"年"+MM+"月"+DD+"日("+JWDay+")"+"です。</div>"); //--> </script> </head> <body bgcolor="#FFFFFF" text="#000000"> </body> </html>

  • ファイル名の一部に年月日が入っているファイルを、指定日以前のもののみ一

    ファイル名の一部に年月日が入っているファイルを、指定日以前のもののみ一括削除する方法を教えてください。 上記の目的を果たすためにバッチファイルを作成しようと思っているのですが、当方プログラミング全般に関して全くの素人でして、Web検索で見つけたものを切り貼りして無理やり作ったところ、思うような結果になりませんでした。 (BCPフォルダ直下に当該ファイルを置いた場合削除できたが、サブフォルダのファイルは削除できない) どうもあと一歩で完成しそうな気がするので、できればこのバッチファイルを元に修正していただけると嬉しいのですが、VBScript等で作成した方が簡単なのであればバッチファイル以外の方法でも構いません。 宜しくお願い致します。 <予め決められているルール(変更は不可)> (1)2010年9月2日21時21分55秒14に作成されたファイルは、「201009」フォルダ配下に「ABC_DEF_GHI_2010090221215514.txt」と「ABC_DEF_GHI_2010090221215514.log」という名前がつけられる。 (2)1日1回バッチファイルを起動し、指定日以前に作成したファイルを全て削除する。 <作成したバッチファイル(DEL.bat)> @echo off cd ..\BCP REM --------------- REM 日付のn日前を求める REM 引数1・・・n(数値) REM 引数1がないときは1(前日) REM 引数2・・・YYYY/MM/DD 形式 REM 引数2がないときは本日とする。 REM --------------- if "%1"=="" ( set n=5 ) else ( set n=%1 ) if "%2"=="" ( for /F "tokens=1" %%a in ('date /t') do set orgdate=%%a ) else ( set orgdate=%2 ) :年月日の分割 set yy=%orgdate:~0,4% set mm=%orgdate:~5,2% set dd=%orgdate:~8,2% set count=0 :Repeat :月日の数値化(8進数対策) set /a mm=1%mm%-100 set /a dd=1%dd%-100 set /a dd=%dd%-1 if %dd% NEQ 0 goto end :月跨り処理 set /a mm=%mm%-1 if %mm% EQU 0 set mm=12&&set /a yy=%yy%-1 set /a dd=%dd%+31 if "%mm%"=="2" set /a dd=%dd%-3 if "%mm%"=="4" set /a dd=%dd%-1 if "%mm%"=="6" set /a dd=%dd%-1 if "%mm%"=="9" set /a dd=%dd%-1 if "%mm%"=="11" set /a dd=%dd%-1 :閏年処理 :4で割り切れるか? set /a u=%yy% %% 4 if not %u%==0 goto end :100で割り切れて、400で割り切れないか? set /a u=%yy% %% 400 set /a v=%yy% %% 100 if %v%==0 if not %u%==0 goto end :2月か? if %mm% EQU 2 set /a dd=%dd%+1 :END set mm=0%mm% set mm=%mm:~-2% set dd=0%dd% set dd=%dd:~-2% set /a count=%count%+1 set DT=ABC_DEF_GHI_%yy%%mm%%dd% IF %count% NEQ %n% goto Repeat for %%F in (*.txt *.log) do if %%F LSS %DT% del /s %%F :EXIT <フォルダ構造> 添付画像をご参照下さい。

  • EXCELのヘッダーについて

    Excel2003です。 ヘッダーに「&[日付]」を指定していますが「yyyy/mm/dd」の形式で表示されます。 これを和暦で「平成yy年mm月dd日」の形式で表示させることはできないでしょうか?

  • UTF8でperlスクリプトを書くと年月日が表示しない

    UTF-8で下記スクリプトを書いて実行すると、 $yy年$mo月$dd日 にあたる部分が表示されず、($day)$hh:$mm:$ss の部分しか表示されません。 ------------------------------------ #!/usr/bin/perl use utf8; use Encode; &get_date(); print "Content-type: text/html\;charset=utf-8\n\n"; print encode('utf8',"$date"); exit; sub get_date { ($ss,$mm,$hh,$dd,$mo,$yy,$day)= localtime(time); $day = ("日","月","火","水","木","金","土")[$day]; $yy = $yy+1900; $mo++; if ( $mo < 10 ) { $mo = "0$mo"; } if ( $dd < 10 ) { $dd = "0$dd"; } if ( $hh < 10 ) { $hh = "0$hh"; } if ( $mm < 10 ) { $mm = "0$mm"; } if ( $ss < 10 ) { $ss = "0$ss"; } $date = "$yy年$mo月$dd日($day)$hh:$mm:$ss"; } ------------------------------ EUCコードでスクリプトを書いてencodeなど不要な部分を変更した場合は$yy年$mo月$dd日の部分も表示されます。 また、上記  $date = "$yy年$mo月$dd日($day)$hh:$mm:$ss"; の部分を下記のように変更すると表示されますが... -------------------------- $date = $yy; $date .="年"; $date .= $mo; $date .="月"; $date .= $dd; $date .="日"; $date .="($day)$hh:$mm:$ss"; -------------------------- なぜ一括してダブルクォートで囲むと表示されないのでしょうか? 今まではEUCでスクリプトを書いておりました。UTF8に翻弄されております... どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 元のテーブルはいじらずフォーム上のみで表示形式を変

    アクセスのフォームにコンボボックスを作り、値集合ソースにテーブル日付型のフィールドを指定し、 値集合タイプをテーブル/クエリにしてあります。 そのコンボボックスには問題なくデータは表示されるのですが、 コンボボックスに表示する日付の形式を、yy/mm/dd形式で表示させたいのです。 コンボボックスの書式をyy/mm/ddにしてみましたが、 yyyy/mm/ddのままです。 元のテーブルのデザインビューでフィールドの書式をyy/mm/ddにしたら、 連動してフォームのコンボボックスもyy/mm/ddになりましたが、 元のテーブルはいじらずフォーム上のみで表示形式を変えることは不可能なのでしょうか? よろしくお願いします。

  • JavaScript

    JavaScriptで <SCRIPT LANGUAGE="JavaScript"> <!-- // 曜日よって文字を変える w = (new Date()).getDay(); if(w == 0) document.write("今日は日曜日です。"); if(w == 1) document.write("今日は月曜日です。"); if(w == 2) document.write("今日は火曜日です。"); if(w == 3) document.write("今日は水曜日です。"); if(w == 4) document.write("今日は木曜日です。"); if(w == 5) document.write("今日は金曜日です。きんきん!"); if(w == 6) document.write("今日は土曜日です。"); //--> </SCRIPT> その名のとうり曜日によって表示を変えるのですが、文字の中に改行タグ<br><p>などを挿入しても問題なく表示されます。ところが<font>タグを入れると全く何も表示されなくなります。 「きんきん!」の部分を大きくして、赤色にしたいのですがどうすればよいでしょうか?

  • ダイナミックテキストへの日付の表示がおかしい

    こんにちは、私、Flashチョー初心者です。 環境は、flash8 winXPです。 月の表示だけが、0になってしまうんですが、、、 ダイナミックテキストに時間を割り当てようとして、 以下のように、スクリプトを記述しました。 0月5日9:35 などと表示されてしまいます。 どうしてなのでしょう?  正しく1月と表示したいのですが、どなたか、教えていただけませんか? #####スクリプト######## mydate = new Date(); yy = mydate.getFullYear(); mm = mydate.getMonth(); dd = mydate.getDate(); hh = mydate.getHours(); ii = mydate.getMinutes(); ss = mydate.getSeconds(); cal = (mm+"月"+dd+"日"+hh+":"+ii);

    • ベストアンサー
    • Flash

専門家に質問してみよう