• ベストアンサー

時間帯によって背景を切り替えるJavascriptとCSS

時間帯によって背景を切り替えるJavascriptとCSSを作りたいのですが以下の書き方で良いのでしょうか?切り替わるには切り替わるのですが、時間の指定がうまくいってないようです。。 また下の3行はJavascriptをOFFにしているときはこのCSSという意味で良いですか? <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function getCSS() { datetoday = new Date(); timenow=datetoday.getTime(); datetoday.setTime(timenow); thehour = datetoday.getHours(); if (thehour > 20) display = "includes/tree_twilight.css"; else if (thehour > 17) display = "includes/tree_sunset.css"; else if (thehour > 14) display = "includes/tree_afternoon.css"; else if (thehour > 11) display = "includes/tree_noon.css"; else if (thehour > 7) display = "includes/tree_morning.css"; else if (thehour > 4) display = "includes/tree_sunrise.css"; else if (thehour > 1) display = "includes/tree_twilight.css"; else display = "includes/tree_sunset.css"; var css = '<'; css+='link rel="stylesheet" href=' + display + ' \/'; css+='>'; document.write(css); // End --> } </script> <script language="javascript">getCSS();</script> <noscript> <link rel="stylesheet" href="includes/tree_sunset.css" type="text/css"/> </noscript> 宜しくお願いします。。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★『>』と『>=』演算子の使い方は、次のようになります。 サンプル1: if ( thehour > 17 ){  18~23時 } else if ( thehour > 11 ){  12~17時 } else if ( thehour > 5 ){  6~11時 } else{  0~5時 } サンプル2: if ( thehour >= 18 ){  18~23時 } else if ( thehour >= 12 ){  12~17時 } else if ( thehour >= 6 ){  6~11時 } else{  0~5時 } 解説: ・『>』演算子よりも『>=』演算子の方が分かりやすいというのは if の  ブロック内の最初が『比較時間~』という解釈が出来るからです。  どちらでも処理的には同じですので最終的に『お好み』ですよ。  これで分かりましたか? ・以上。→私は『サンプル2』の方が分かりやすいと思った。でアドバイスしたの。

cheese0084
質問者

お礼

わかりました! ご丁寧な説明ありがとうございました。 今後とも宜しくお願い致します。

その他の回答 (4)

noname#56851
noname#56851
回答No.5

始めに基本となるcssを読み込んでしまうと、javascriptoを無効にしてあっても大丈夫になるし、後で読み込むcssを変更部分だけ書かれたものに出来ますので、良いかと。 質問の答えとしては意味が無いとは思いますが。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★文法的には『;』は必要ですね。 ・別の回答です。参考に!→先頭の番号は削除してお使い下さい。 サンプル1: CSStable = [ 0 "includes/tree_sunset.css", 1 "includes/tree_sunset.css", 2 "includes/tree_twilight.css", 3 "includes/tree_twilight.css", 4 "includes/tree_twilight.css", 5 "includes/tree_sunrise.css", 6 "includes/tree_sunrise.css", 7 "includes/tree_sunrise.css", 8 "includes/tree_morning.css", 9 "includes/tree_morning.css", 0 "includes/tree_morning.css", 1 "includes/tree_morning.css", 2 "includes/tree_noon.css", 3 "includes/tree_noon.css", 4 "includes/tree_noon.css", 5 "includes/tree_afternoon.css", 6 "includes/tree_afternoon.css", 7 "includes/tree_afternoon.css", 8 "includes/tree_sunset.css", 9 "includes/tree_sunset.css", 0 "includes/tree_sunset.css", 1 "includes/tree_twilight.css", 2 "includes/tree_twilight.css", 3 "includes/tree_twilight.css" ]; display = CSStable[thehour]; サンプル2: switch ( thehour ){  case 2: case 3: case 4: display = "includes/tree_twilight.css"; break;  case 5: case 6: case 7: display = "includes/tree_sunrise.css"; break;  case 8: case 9: case 10: case 11: display = "includes/tree_morning.css"; break;  case 12: case 13: case 14: display = "includes/tree_noon.css"; break;  case 15: case 16: case 17: display = "includes/tree_afternoon.css"; break;  case 18: case 19: case 20: display = "includes/tree_sunset.css"; break;  case 21: case 22: case 23: display = "includes/tree_twilight.css"; break;  default: display = "includes/tree_sunset.css"; } 最後に: ・『else if』の使い方は、回答者 No.2 さんの様にしなくても大丈夫ですよ。  ただ、分かりやすく『>=』の演算子を使えばよいのです。分かりますか? ・上記の『CSStable』の時間帯は cheese0084 さんの質問内容を忠実に再現していますので  時間帯が違うときは修正して下さい。サンプル2も同様に修正などして下さい。 ・以上。おわり。→今後の参考に!

cheese0084
質問者

お礼

>★文法的には『;』は必要ですね。 了解です。 >・『else if』の使い方は、回答者 No.2 さんの様にしなくても大丈夫ですよ。 ただ、分かりやすく『>=』の演算子を使えばよいのです。分かりますか? う~ん、よく分かんないですけど、simple is the bestって事ですね! 有難うございました、今後の参考にさせていただきます!!

  • tapping_h
  • ベストアンサー率33% (5/15)
回答No.2

すいませんさらに追記です。 css切り替えの機能自体はうまく行ってると思われるので、 if条件を少し。多分このように細かくわけないと質問者さまの想定どおりにならないと思うのですが・・・。 ____________ if ((24>thehour) &&( thehour >= 20)){ display = "includes/tree_twilight.css" } else if ((20>thehour) && (thehour>=17)){ display = "includes/tree_sunset.css" } else if( (17>thehour) && (thehour >=14)){ display = "includes/tree_afternoon.css" } else if((14>thehour) && (thehour >=11)){ display = "includes/tree_noon.css" } else if ((11>thehour) &&( thehour >=7)){ display = "includes/tree_morning.css" } else if((7>thehour) && (thehour>=4)){ display = "includes/tree_sunrise.css" } else if ((4 >thehour )&&( thehour>= 1)){ display = "includes/tree_twilight.css"} else {display = "includes/tree_sunset.css"} _____________ これでパソコンの時間を手動で変更して動作確認していただければうまくいく・・・筈です。(^^;

cheese0084
質問者

お礼

else if ((20>thehour) && (thehour>=17)){ の部分を else if ((19>thehour) && (thehour>=17)){ にしてみたら丁度のタイミングで変わりました。 が 僕が書いているスクリプトには else if ((19>thehour) && (thehour>=17)) {display = "includes/tree_sunset.css";} のようにcss"のあとに;があるんですけど、これは不要なのですか?

  • tapping_h
  • ベストアンサー率33% (5/15)
回答No.1

if文の書式ではないでしょうか。 {}が抜けていると思われます。 __________________________________ if(条件){動作} else if (条件){動作}  ・・・・略 ・・・・ else{display = "includes/tree_sunset.css"} ______________________________ こんな修正ではどうでしょうか。  

cheese0084
質問者

お礼

あ、なんかうまくいってるっぽいです。 有難うございました!

関連するQ&A

  • JavaScriptからCSSを呼び出す方法

    現在、Noscript時とJavaScript稼働時の呼び出すCSSを分けるため、下記のような設定をしています。whole.cssからJavaScript稼働時のCSSをimportしています。 IE6エラー内容は「'framename' が宣言されていません」です。 記述 <link href="whole.css" rel="stylesheet" type="text/css" id="css"/> <script> framename.document.getElementById ('css').href = 'whole.css'; </script> JavaScript稼働時に呼び込む設定となっています。 IE6のエラー以外他ブラウザーは正常に表示されます。 よろしくお願いします。

  • JavaScriptで、参照する階層を変えるとCSSが読み込めない

     ランダムに1.cssまたは2.cssというcssファイルを読み込むスクリプトを記述しています。 <script language="javascript"> <!-- var cssno = Math.floor(Math.random() * 2 + 1); document.write("<link rel='stylesheet' type='text/css' href='"+cssno+".css'>"); //--> </script>  これでうまく動いたので、このスクリプトを含むHTMLファイルがある階層に「css」というフォルダを作り、その中にcssファイルを移しました。そこで、 <script language="javascript"> <!-- var cssno = Math.floor(Math.random() * 2 + 1); document.write("<link rel='stylesheet' type='text/css' href='css/"+cssno+".css'>"); //--> </script> というふうに、変数cssnoの前に階層を表す「css/」をつけたのですが、これをやったとたんに動かなくなりました。  ファイルを同じ階層に移動させて、「css/」を取れば(=元の状態に戻せば)動きます。参照する階層を間違えているのかと思って、<head></head>内に通常通り<link rel~>でCSSを指定したら読み込めました。  スクリプトの記述方法がいけないんでしょうか? どうすれば、フォルダ「css」からcssファイルを読み込めるようになりますか?

  • javascriptにてcss切り替え

    現在webサイトを作成しており、javascriptのcss切り替えにてページの色変更を作っています。 (青、緑、赤、三色で作成) デフォは青で表示しています。 その後緑、赤とリンクで色が変わるようにしています。 ここでご質問です。 緑をクリックした場合は緑に変わる(赤も同様)のですが、別ページにリンクした場合、緑(赤)ではなく青に戻ってします。 別ページにとんでも緑(赤)が引き継がれるにはどのように記述したらよろしいでしょうか? ソースは以下のとおりです。 <head> <link rel="stylesheet" type="text/css" href="css/blue/top.css" media="all" /> <script src="js/styleswitch.js" type="text/javascript"></script> <link rel="alternate stylesheet" type="text/css" title="blue" href="css/blue/top.css" media="all" /> <link rel="alternate stylesheet" type="text/css" title="green" href="css/green/top.css" media="all" /> <link rel="alternate stylesheet" type="text/css" title="red" href="css/red/top.css" media="all" /> </head> <body> <div style="width:200px;"> <a href="javascript:chooseStyle('blue', 30)">青</a><br /> <a href="javascript:chooseStyle('green', 30)">緑</a><br /> <a href="javascript:chooseStyle('red', 30)">赤</a> </div> </body> javascriptは以下のところからしようしています。 http://noongoro.main.jp/note/note0059.html javascriptは初心者です。 ご教授お願いいたします。

  • Macfirefox3とMacfirefox2以下でCSSを切り替えたい

    MacのFirefox3は、Firefox2までとはデフォルトフォントサイズが 違うので、Firefox3とそれ以外のFirefoxで分けたいです。 今まで、CSSを以下のスクリプトでブラウザ別に分岐していました。 MacのFirefox3の分岐を増やしてみたのですが、それ以外のFirefoxのCSSに 分岐されてしまいます。 あまりJavascriptに明るくないので、 どうしてわかれてくれないものか困っています。 どうぞお知恵をお貸し下さい! ↓以下、かいてみたソースです。 var Win=(navigator.userAgent.indexOf("Win")!=-1); var Mac=(navigator.userAgent.indexOf("Mac")!=-1); var Explorer=(navigator.appName.indexOf("Explorer")!=-1); var Firefox=(navigator.userAgent.indexOf("Firefox") !=-1); var Netscape=(navigator.appName.indexOf("Netscape")!=-1); var opera=(navigator.userAgent.indexOf("Opera")!=-1); var safari=(navigator.userAgent.indexOf("Safari")!=-1); var Version=navigator.appVersion.charAt(0); if(safari){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); } else if(Win && Explorer && Version=="6"){ document.write('<LINK rel="stylesheet" href="/css/win_ie.css" type="text/css">'); } else if(Win && Firefox){ document.write('<LINK rel="stylesheet" href="/css/win_ie.css" type="text/css">'); } else if(Win && opera){ document.write('<LINK rel="stylesheet" href="/css/win_ie.css" type="text/css">'); } /*増やしたところ*/ else if(Mac && Firefox && Version=="3"){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); }/*増やしたところ終わり*/ else if(Mac && Firefox){ document.write('<LINK rel="stylesheet" href="/css/mac.css" type="text/css">'); } else if(Mac && opera){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); } else if(Win && Netscape && Version=="4"){ document.write('<LINK rel="stylesheet" href="/css/win_nn.css" type="text/css">'); } else if(Mac && Explorer && Version=="5"){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); } else if(Mac && Netscape && Version=="7"){ document.write('<LINK rel="stylesheet" href="/css/mac.css" type="text/css">'); } else if(Mac && Netscape && Version=="4"){ document.write('<LINK rel="stylesheet" href="/css/mac.css" type="text/css">'); } else{ document.write('<LINK rel="stylesheet" href="/css/font.css" type="text/css">'); }

  • ブラウザによるCSSの切替スクリプト

    ブラウザによるCSSの切替スクリプトを作りましたが上手くいきません。 ====css.js====================================================== function browserCheck(){ //変数myBrowにユーザの環境を代入 myBrow = navigator.userAgent; //変数myBrowに文字列Operaが入っていた場合(Opera)の処理 if (myBrow.match(/Opera[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Opera.css" charset="Shift_JIS">"); //Operaの処理 //変数myBrowに文字列MSIEが入っていた場合(IE)の処理。 //Operaにも文字列MSIEが入っているため、Operaの処理の後に行います。 else if (myBrow.match(/MSIE (\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="MSIE.css" charset="Shift_JIS">"); //MSIEの処理 //変数myBrowに文字列Firefoxが入っていた場合の処理。 else if (myBrow.match(/Firefox[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Firefox.css" charset="Shift_JIS">"); //Firefoxの処理 //変数myBrowに文字列Netscapeが入っていた場合の処理。 else if (myBrow.match(/Netscape[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Netscape.css" charset="Shift_JIS">"); //Netscapeの処理 //上記以外の処理 else myBrow = "unknown"; //それ以外のブラウザ     document.write("<link rel="stylesheet" type="text/css" href="unknown.css" charset="Shift_JIS">"); //それ以外のブラウザの処理 } ================================================================ <html> <head> <script language="JavaScript" src="css.js"></script> <Script language="JavaScript"><!-- browserCheck(); //--></Script> </head> </html> どこか間違っているでしょうか? ご回答、宜しくお願い致します。

  • HTMLメールの外部CSSが有効になりません

    HTMLメールから以下のように外部CSS(http://から始めてます)を利用したいのですが、実際にOUTLOOK 2003 SP3で見るとスタイルが適用されていません。 ローカルで同じHTMLをブラウザで開くとスタイルは適用されます。HTMLメールのときは何か特別なことが必要なのでしょうか? <link href="http://domain/style.css" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="http://domain/style2.css" type="text/css" media="screen" /> <script language="JavaScript1.2" src="http://domain/js.js" type="text/javascript"></script> ヘッダ全体を以下に掲載しておきます。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <title>TITLE</title> <link href="http://domain/style.css" rel="stylesheet" type="text/css"> <script language="JavaScript1.2" src="http://domain/js.js" type="text/javascript"></script> <link rel="stylesheet" href="http://domain/style2.css" type="text/css" media="screen" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head>

  • ブラウザの解像度横幅1280の時スタイルシートを記述したいのですが

    記述が間違ってると思われうまくいきません。 どなたか間違ってるところを指摘してくださいませ。。 初心者ですお願い致します。 <html> <head> <title>モニタサイズに合わせてウィンドウサイズを変更する</title> <script Language="JavaScript"><!-- w = screen.width; moveTo(0,0); if (w == 1280) { document.write ("<link rel=stylesheet href="'+ a.css +'" type="text/css">"); } else if () { document.write("<link rel=stylesheet href="'+ b.css +'" type="text/css">"); } // --></script> </head> <body> </body> </html> なおa.cssには、背景黒くしてます。

  • css,javascriptの呼び出しについて

    某サイトで、 cssの呼び出しで <link rel="stylesheet" href="xxxx.css?v=yyyyyy" > javascriptの呼び出しで <script src="xxxx.js?v=yyyyyy"> という記述がされていました。 phpスクリプトではよく見かける?v=yyyyyyという記述ですが、cssとjavascriptでは見かけた事がないので色々と調べたのですが、答えが見つかりません。 上記に示した様な記述方法は一般的なものなのでしょうか? 取り留めのない質問ですがよろしくお願い致します。

    • ベストアンサー
    • CSS
  • CSSとMacの関係

    CSSの制御で、 外部CSS マック用に css/style_mac.css に body {font-size: 12pt;} td {font-size: 12pt;} ウイン用に css/style_win.cssに body {font-size: 10pt;} td  {font-size: 10pt;} と記述しています。 がプラウザで確認したところ、 windows IE5.0は制御されていますが、 Mac IE5.0で制御されません。 HTMLの呼び出しは、 <SCRIPT LANGUAGE="JavaScript"> <!-- if(navigator.appVersion.indexOf("Mac",0) != -1){ document.writeln('<link rel="stylesheet" type="text/css" href="css/style_mac.css">'); } else { document.writeln('<link rel="stylesheet" type="text/css" href="css/style_win.css">'); } //--> </SCRIPT> と記述しています。 そもそもjavaがわからないので どこを直せばMacでも制御されるのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • javascriptをCSSに書き込むと動作しません。何故ですか?

    下記のjavascriptをCSSに書き込みました。拡張子は.jsとしました。 jsのフォルダにtopmuv.jsというファイル名にしました。 <script type="text/javascript"> <!-- function blink() { if (!document.all) { return; } for (i = 0; i < document.all.length; i++) { obj = document.all(i); if (obj.className == "blink") { if (obj.style.visibility == "visible") { obj.style.visibility = "hidden"; } else { obj.style.visibility = "visible"; } } } setTimeout("blink()", 500); } // --> </script> </head> <body onload="blink()"> htmlの読み込みは <LINK rel="stylesheet" href="js/topmuv.js" type="text/javascript"> と書いています。 この場合、上記javascriptのソースをシート上にダイレクトに書き込むと正常に動作しますがcssにすると動作しません。 何が悪いのでしょうか? 詳しい方宜しくお願いします。

専門家に質問してみよう