HTMLで指定された背景色は、JavaScriptで変更することが出来る。
前講「JavaScript第壱講 文字列の出力と日付」の記事の時と同様に、
適当なHTMLファイルを作成して保存し、
作成したHTMLファイルに、以下のソースコードを書いてみよう。
<form> 背景色を変更する:<br> <input type="button" value="darkviolet" style="background-color:#9400d3;width:120px;height:40px" onClick="document.bgColor='#9400d3'"> <input type="button" value="gold" style="background-color:#ffd700;width:120px;height:40px" onClick="document.bgColor='#ffd700'"> <input type="button" value="orange" style="background-color:#ffa500;width:120px;height:40px" onClick="document.bgColor='#ffa500'"> <input type="button" value="yellowgreen" style="background-color:#9acd32;width:120px;height:40px" onClick="document.bgColor='#9acd32'"> </form>すると、以下の様にブラウザ上に表示されるはずだ。
上記のソースコードは、4色であるが、
今度は、さらに、12色を追加して、16色にしてみよう。
<form>
背景色を変更する:<br>
<input type="button" value="black"
style="background-color:#000000;color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#000000'">
<input type="button" value="gray"
style="background-color:#808080;width:120px;height:40px"
onClick="document.bgColor='#808080'">
<input type="button" value="silver"
style="background-color:#c0c0c0;width:120px;height:40px"
onClick="document.bgColor='#c0c0c0'">
<input type="button" value="white"
style="background-color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#ffffff'">
<br>
<input type="button" value="red"
style="background-color:#ff0000;width:120px;height:40px"
onClick="document.bgColor='#ff0000'">
<input type="button" value="maroon"
style="background-color:#800000;color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#800000'">
<input type="button" value="teal"
style="background-color:#008080;color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#008080'">
<input type="button" value="aqua(cyan)"
style="background-color:#00ffff;width:120px;height:40px"
onClick="document.bgColor='#00ffff'">
<br>
<input type="button" value="lime"
style="background-color:#00ff00;width:120px;height:40px"
onClick="document.bgColor='#00ff00'">
<input type="button" value="green"
style="background-color:#008000;color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#008000'">
<input type="button" value="purple"
style="background-color:#800080;color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#800080'">
<input type="button" value="fuchsia(magenta)"
style="background-color:#ff00ff;width:120px;height:40px"
onClick="document.bgColor='#ff00ff'">
<br>
<input type="button" value="blue"
style="background-color:#0000ff;color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#0000ff'">
<input type="button" value="navy"
style="background-color:#000080;color:#ffffff;width:120px;height:40px"
onClick="document.bgColor='#000080'">
<input type="button" value="olive"
style="background-color:#808000;width:120px;height:40px"
onClick="document.bgColor='#808000'">
<input type="button" value="yellow"
style="background-color:#ffff00;width:120px;height:40px"
onClick="document.bgColor='#ffff00'">
<br>
<input type="button" value="darkviolet"
style="background-color:#9400d3;width:120px;height:40px"
onClick="document.bgColor='#9400d3'">
<input type="button" value="gold"
style="background-color:#ffd700;width:120px;height:40px"
onClick="document.bgColor='#ffd700'">
<input type="button" value="orange"
style="background-color:#ffa500;width:120px;height:40px"
onClick="document.bgColor='#ffa500'">
<input type="button" value="yellowgreen"
style="background-color:#9acd32;width:120px;height:40px"
onClick="document.bgColor='#9acd32'">
</form>
追加部分は、赤字で示している部分になる。
HTMLで指定された文字色も、JavaScriptで変更することが出来る。
今度は、HTMLファイル内に、以下のソースコードを書いてみよう。
<form> 文字色を変更する:<br> <input type="button" value="darkviolet" style="background-color:#9400d3;width:120px;height:40px" onClick="document.fgColor='#9400d3'"> <input type="button" value="gold" style="background-color:#ffd700;width:120px;height:40px" onClick="document.fgColor='#ffd700'"> <input type="button" value="orange" style="background-color:#ffa500;width:120px;height:40px" onClick="document.fgColor='#ffa500'"> <input type="button" value="yellowgreen" style="background-color:#9acd32;width:120px;height:40px" onClick="document.fgColor='#9acd32'"> </form>すると、以下の様にブラウザ上に出力されるはずだ。
上記のソースコードは、4色であるが、
今度は、さらに、12色を追加して、16色にしてみよう。
<form>
文字色を変更する:<br>
<input type="button" value="black"
style="background-color:#000000;color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#000000'">
<input type="button" value="gray"
style="background-color:#808080;width:120px;height:40px"
onClick="document.fgColor='#808080'">
<input type="button" value="silver"
style="background-color:#c0c0c0;width:120px;height:40px"
onClick="document.fgColor='#c0c0c0'">
<input type="button" value="white"
style="background-color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#ffffff'">
<br>
<input type="button" value="red"
style="background-color:#ff0000;width:120px;height:40px"
onClick="document.fgColor='#ff0000'">
<input type="button" value="maroon"
style="background-color:#800000;color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#800000'">
<input type="button" value="teal"
style="background-color:#008080;color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#008080'">
<input type="button" value="aqua(cyan)"
style="background-color:#00ffff;width:120px;height:40px"
onClick="document.fgColor='#00ffff'">
<br>
<input type="button" value="lime"
style="background-color:#00ff00;width:120px;height:40px"
onClick="document.fgColor='#00ff00'">
<input type="button" value="green"
style="background-color:#008000;color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#008000'">
<input type="button" value="purple"
style="background-color:#800080;color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#800080'">
<input type="button" value="fuchsia(magenta)"
style="background-color:#ff00ff;width:120px;height:40px"
onClick="document.fgColor='#ff00ff'">
<br>
<input type="button" value="blue"
style="background-color:#0000ff;color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#0000ff'">
<input type="button" value="navy"
style="background-color:#000080;color:#ffffff;width:120px;height:40px"
onClick="document.fgColor='#000080'">
<input type="button" value="olive"
style="background-color:#808000;width:120px;height:40px"
onClick="document.fgColor='#808000'">
<input type="button" value="yellow"
style="background-color:#ffff00;width:120px;height:40px"
onClick="document.fgColor='#ffff00'">
<br>
<input type="button" value="darkviolet"
style="background-color:#9400d3;width:120px;height:40px"
onClick="document.fgColor='#9400d3'">
<input type="button" value="gold"
style="background-color:#ffd700;width:120px;height:40px"
onClick="document.fgColor='#ffd700'">
<input type="button" value="orange"
style="background-color:#ffa500;width:120px;height:40px"
onClick="document.fgColor='#ffa500'">
<input type="button" value="yellowgreen"
style="background-color:#9acd32;width:120px;height:40px"
onClick="document.fgColor='#9acd32'">
</form>
追加部分は、赤字で示している部分になる。
参考文献に挙げた、「ホームページ 誰も書かなかったホントの裏技」の
101ページから102ページにかけて書かれているスクリプトに、
50ms間隔で画面の背景色を7色に点滅させるというものがあった。
作者はアニメ番組などの冒頭で「テレビを見るときは部屋を明るくして離れてみよう」の
テロップが流れる原因となった、某アニメで使われた技法「パカパカ」を意識したようだが、
これは本来青とピンクの補色の激しい光の点滅をいう。
余談だが、この事故を参考にアメリカとロシアが同様のてんかん症状を引き起こさせる
光線点滅兵器の開発に着手しているともいわれている。信憑性は定かではないが、
アメリカ側は非殺傷兵器としての研究、ロシア側はパソコンのモニター画面に
パカパカを表示させて利用者を気絶させるコンピュータウイルスの開発ということらしい。
話を元に戻すが、このスクリプトを参考にして、原点回帰の観点から「パカパカ」の再現を試みた。
但し、 背景色を点滅させるインターバルの間隔は適当である。
<script language="JavaScript" type="text/javascript"> <!-- var color = new Array(); color[0]="blue"; color[1]="red"; color[2]="blue"; color[3]="red"; color[4]="blue"; color[5]="red"; color[6]="blue"; color[7]="red"; color[8]="blue"; color[9]="red"; color[10]="blue"; color[11]="red"; color[12]="blue"; color[13]="red"; color[14]="blue"; color[15]="red"; color[16]="blue"; color[17]="red"; color[18]="blue"; color[19]="red"; color[20]="blue"; color[21]="red"; color[22]="blue"; color[23]="red"; color[24]="blue"; color[25]="red"; color[26]="blue"; color[27]="red"; color[28]="blue"; color[29]="red"; color[30]="blue"; color[31]="black"; color[32]=document.bgcolor; count=0; function setbgcolor(count){ document.bgColor = color[count]; } function flash() { if(count < color.length) setInterval("setbgcolor(count++)",25); count=0; } //--> </script> <form> <input type="button" value="点滅開始" onClick="flash()"> </form>ここでは、「点滅開始」というラベルの貼られたボタンをクリックすると、
ところで、上記では、配列を33個分直接代入しているが、
for文を使えば、以下のように、簡潔に書くことができる。
<script language="JavaScript" type="text/javascript"> <!-- var color = new Array(); for(n=0;n<=31;++n){ color[2*n]="blue"; color[2*n+1]="red"; } color[64]="black"; color[65]=document.bgcolor; count=0; function setbgcolor(count){ document.bgColor = color[count]; } function flash() { if(count < color.length) setInterval("setbgcolor(count++)",25); count=0; } //--> </script> <form> <input type="button" value="点滅開始" onClick="flash()"> </form>或いは、配列を全く使わずに、
var i = 0; window.onload = function(){ setInterval("flash()",50); } var flash = function(){ if(i % 2 == 0){ document.bgColor = "#ff0000"; } else { document.bgColor = "#0000ff"; } i++; }と書いてもいいかもしれない。
他にも、各自でblueをcyanにするとか、インターバルの間隔を変える等、
色々工夫をするのも面白いかも知れない。このように、スクリプトの書き方次第では、
ヤバい事も出来てしまうので、セキュリティ上問題があるともいえる。
なお、人によっては気分を悪くする可能性がある。自己責任のもとで行うこと。
何度もやっていると、本当に気分が悪くなるかもしれないので、ほどほどに。