アプリ版:「スタンプのみでお礼する」機能のリリースについて

タイトル通りなのですが、なかなかうまくいきません・・・。

<BODY style="background-image:url(test.gif);background-repeat:no-repeat;
background-attachment:fixed;background-position:bottom right;">

スタイルを使って右下に背景画像を表示しています。このtest.gifを時間帯によって変えたいです。

自分なりにこのようにしてheadタグの中に埋め込みましたがうまくいきません。

<SCRIPT LANGUAGE="JavaScript">
<!--- function geth(t){ if (t<=5) document.write("<BODY style='background-image:url(test1.gif);background-repeat:no-repeat;
background-attachment:fixed;background-position:bottom right;'>");
else { if (t<=11) document.write("<BODY style='background-image:url(test2.gif);background-repeat:no-repeat;
background-attachment:fixed;background-position:bottom right;'>");
else { if (t<=17) document.write("<BODY style='background-image:url(test3.gif);background-repeat:no-repeat;
background-attachment:fixed;background-position:bottom right;'>");
else { if (t<=23) document.write("<BODY style='background-image:url(test4.gif);background-repeat:no-repeat;
background-attachment:fixed;background-position:bottom right;'>");
}}} } //---> </SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--- h = new Date(); geth(h.getHours()); //---> </SCRIPT>

<BODY BACKGROUND='test.gif'>という普通の背景の表示の仕方ならうまくできました。スタイルはheadの中では使えないのでしょうか・・・?どのようにすればうまくいくでしょうか?JavaScriptに関してはほとんど無知ですがよろしくおねがいします。

※意味不明なことを言っていたらすみません。

A 回答 (1件)

head要素内でbodyタグを書き出すようになっている点が気になります。

本来であれば、bodyタグは1つだけですので、ソースのHTML文法の面での整合性を重視するなら、ちょっと強引過ぎるかもしれません。

document.write()でbodyタグを書き出す方法を取るのであれば、それよりもhead要素内にJavaScriptでstyleタグを書き出して、そのスタイルシートで背景画像を指定するのがよいのではないでしょうか。
あるいは、DHTML的手法を使って、JavaScriptからbody要素の背景画像のスタイルシートにアクセスし、書き換えるという方法でも良いかも知れませんね。

とりあえず、document.write()でスタイルシートを書き出す手法を。

<SCRIPT LANGUAGE="JavaScript"><!--
h = new Date();
t=h.getHours();

if (t<=5) { bgimg="test1.gif"}
else if (t<=11) { bgimg="test2.gif"}
else if (t<=17) { bgimg="test3.gif"}
else { bgimg="test4.gif"}

stl="<style type=\"text/css\"><!--\n body{background-image: url(\""+bgimg+"\");\n}/n-"+"-><"+"/style>\n";
document.write(stl);
//---> </SCRIPT>
<style type="text/css"><!--
body{
background-repeat:no-repeat;
background-attachment:fixed;
background-position:bottom right;
}
--></style>

これをhead内に入れてみてください。 背景画像を指定するスタイルシートはJavaScriptから書き出すようにして、それ以外のスタイル(背景画像の表示位置、リピートなど)については共通しているようですので、JavaScriptからではなく、style要素を別に書き込んで、そこから読み込ませる形にしてあります。
これでうまくいくのではないでしょうか。

参考になれば。 見当違いでしたら、ごめんなさい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!うまくできました!完璧です!
head要素内でbodyタグを書き出すのは強引だったんですねぇ・・・。背景画像を指定するのだけにJavaScriptを使えばよかったんですね。本当に助かりました。

お礼日時:2003/10/26 08:13

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