Java Scriptの解説
5.ホームページを飾る小道具
1.バックの色が変わる
背景の色が少しづつ変わります。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>Java Script 例1</TITLE>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
var r1,r2,g1,g2,g,b1,b2,c,c1,c2,i,j,k;
r2="0",r1="f";
g2="f",g1="0";
b2="0",b1="0";
c1="fedcba9876543210";
c2="fedcba9876543210";
function coloe(){
r=r2+r1;
g=g2+g1;
for (i=0;i<16;i=i+2){
b2=c2.substring(i,i+1);
for (j=0;j<16;j=j+2){
b1=c1.substring(j,j+1);
b=b2+b1;
c=r+g+b;
window.status=c;
document.bgColor=c;
for (k=0;k<500;k=k+1){}
}
}
}
//−−>
</SCRIPT>
</HEAD>
<BODY onload="color();" BGCOLOR="#0ff0ff">
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例1表示 ここをクリックして下さい。例が表示されます。
<解説>
1.色は赤(r),緑(g),青(b)の三色により決まります。それぞれの色は16進法の2桁の数字で表されます。
例えばr=1a,g=f0,b=9d。そして全体ではc=1af09dとなります。このプログラム例は,青の部分だけを変化させています。
赤でも緑でもどこでもいいですので自分で色々変えて下さい。
r2は赤の二桁目,r1は赤の一桁目です。以下g2,g1,b2,b1も同じです。
この例ではr=0f,g=f0,b=00となってます。c=0ff000。
c1,c2は16進法の数字を取り出すためのものです。大きな数字から小さい数字へと順番に並べた文字列です。
c1=”0123456789abcdef”;この順に並べれば小さな数字から大きな数字に変化する事になります。
2.for文 (ループ命令)
for (i=0;i<16;i=i+1) { }
i=0は,iの初期値が0;i<16は,この条件式を満たす間{ }を実行する事になります。
最後のi=i+1は,1回実行するとiの数字に1増加させることです。ですからiは0,1,2,3,と{ }を実行する度の増えます。
例のようにi=i+2は,2づつ増える事を意味します。0,2,4,6,..となります。
for (i=0;i<16;i=i+1) {for (j=0;j<16;j=j+1){A}B}
このように2重ループもできます。i=0の時,jは0から15まで変化します。次にi=1となりまたjが0から15まで変化します。
最後i=15でjが0から15まで変化して,終了となります。ですから{A}は16×16回{B}は16回実行されます。
3.function coloe(){
r=r2+r1;g=g2+g1; 赤と青の色を代入します。
for (i=0;i<16;i=i+2){b2=c2.substring(i,i+1);
c2.substring(i,i+1) c2の文字列から1文字づつ取り出す。for文が(i=0;i<16;i=i+1)であれば
f,e,d,c,b,a,9,8,7,6,5,4,3,2,1,0と順に取り出すことになります。ここではi=i+2ですので
f,d,b,9,7,5,3,1となります。なぜこうしたかというとi=i+1では色の変化が遅いためです。ただこれは,パソコンの性能により違いますので
どういう条件がよいか異なります。
for (k=0;k<500;k=k+1){} これは,NSでのチラツキ防止のためです。これを入れるといくらかチラツキません
青の下一桁(b1)が先に変化します。b1とb2を入れ替えると変な色の変化します。それが面白いという人もいるかもしれません。
b=b2+b1;c=r+g+b; 青の色を決めて,最後にcに色の数字を代入します。
document.bgColor=c;背景をcの数字の色に変えます。
色の初期値は何でもいいです。r=0f,g=f0になってますが,色々変えてみて下さい。r1,r2,g1,g2の数値を変えるだけでも
色々な色になります。
色の変化は,赤でも緑でもかまいません。bのかわりにrとかgにすればいいです。不思議なことをするのであれば,
b2とr2だけ変化させることも面白いかもしれません。私は確認してませんので,どの様になるかわかりません。
また,どの様な色からどの様な色に変化させたいか見たい時は
Appletの部屋に色を見るプログラムがありますので見て下さい。
2.マウスが通過すればメーセージ表示
絵の上にマウスがくれば,メッセージを表示します。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>Java Script 例2</TITLE>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
var s;
function msg(s){
document.MyForm.Mouse.value=s;
window.status=s;
}
//−−>
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="MyForm">
<TEXTAREA NAME="Mouse" ROWS="3" COLS="30">
</TEXTAREA></FROM><BR>
<A HREF="JavaScript:" onMouseOver="msg('JavaScriptの解説'); return true;">
<IMG SRC="../image/script1.gif"></A>
<A HREF="JavaScript:" onMouseOver="msg('Java Appletの解説'); return true;">
<IMG SRC="../image/applet1.gif"></A>
<A HREF="JavaScript:" onMouseOver="msg('VRMLのテスト'); return true;">
<IMG SRC="../image/vrml1.gif"></A><BR>
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例2表示 ここをクリックして下さい。例が表示されます。
1.function msg(s)
document.MyForm.Mouse.value=s; msg(s)関数msgの()の中のsという情報を受けとって
テキストエリアにsを表示する。
2.<A HREF="JavaScript:" onMouseOver="msg('JavaScriptの解説'); return true;">...
onMouseOver マウスが通過すればmsg関数を実行する。その際,「JavaScriptの解説」という情報を渡します。
関数は渡された情報をテキストエリアに表示します。
3.時間,曜日などで表示を変える
<パターン1>
1時間とか1日は待てませんので,60秒の3分割して,ページを開いた時間によってメッセージを変えて表示するプログラムです。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>Java Script 例3</TITLE>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
var s;
function msg(){
today=new Date();
s=today.getSeconds();
if (s<=19){document.write("<H3>0−19秒です。</H3>");}
if (20<=s && s<=39) {document.write("<H3>20−39秒です。</H3>");}
if (40<=s && s<=59) {document.write("<H3>40−59秒です。</H3>");}
window.status=s;
}
//−−>
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
msg();
//−−>
</SCRIPT>
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例3表示 ここをクリックして下さい。例が表示されます。
1.function msg()
today=new Date();s=today.getSeconds();これは「3.時間表示」で解説済みです。sには秒が代入されます。
if (s<=19){document.write("<H3>0−19秒です。</H3>");}
if (20<=s && s<=39) {document.write("<H3>20−39秒です。</H3>");}
if (40<=s && s<=59) {document.write("<H3>40−59秒です。</H3>");}
sの数字により表示させる文が変わります。sが19以下,20から39以下,40から59以下の3パターンです
該当するところdocument.write文を実行してメッセージを表示します。
h=today.getHours(); 実際に使う時は,時間を使った方がいいでしょう。1時間毎とか午前,午後で表示を変える。
hには0から23という数字が入ります。1時間毎であれば,if(h==1){document.write***}
午前,午後であれば,if(h<=11){document.write***},if(h>=12)**
というような感じで作ればいいです。
この例ではページが読み込まれた時間だけしか表示しません。違う応用として,テキストエリアに,
何秒か毎に表示を変える事もできます。
例4表示 ここをクリックして下さい。例が表示されます。
<パターン2>
曜日により,表示するページが変わります。
日曜日,火曜日,木曜日,土曜日は,このページ「例1表示」と同じ所が開きます。
月曜日,水曜日,金曜日は,このページ「例2表示」と同じ所が開きます。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>Java Script 例5</TITLE>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
var today,day,t;
function page(){
today=new Date();
day=today.getDay();
t=day%2;
if (t==0){location="script86.html";}
if (t==1){location="script87.html";}
}
//−−>
</SCRIPT>
</HEAD>
<BODY>
<A HREF="JavaScript:page()">例5表示</A>ここをクリックして下さい。例が表示されます。<BR>
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例5表示 ここをクリックして下さい。例が表示されます。
この例題は,このページそのものにあります。
1.function page()
today=new Date();day=today.getDay(); これは「3.時間表示」で解説済みです。dayには0から6の数字が入ります。
日曜日が0、土曜日が6で1づつ増加します。例ではt=day%2;とdayを2で割った余りをtに代入してます。
ですから,1日おきにt=0の時は「例1表示」t=1の時「例2表示」と交互に変わります。
if (t==0){location="script86.html";} tが0の時,script86.htmlのページを開くという意味です。
if (day==0){location="script0.html";}
−−−−−−−−−−−−−−−−−−−
(day==1),2,3,4,5と増やし,location=対応するページ
−−−−−−−−−−−−−−−−−−−
if (day==6){location="script6.html";}
上記のように,曜日毎に開くページを変える方が面白いでしょう。書くのが面倒なので例のように2つのページにしただけです
2.<A HREF="JavaScript:page()">例4表示</A>
"JavaScript:page()" クリックされるとJavaScriptで書かれた,page()という関数を呼び出す
娯楽室の各部屋