ヴィア・デュック地区
エリゼ宮
マドレーヌ寺院
アンヴァリッド
シテ島
と黄色い三角
を使って
画像をすり替えているだけです。
大きさと形を揃えてあるので色が変わったように見えます。
<SCRIPT>
function s(n) {
for (i = 1; i <= 5; i++) {
if (n == i) {
doc = "trir.gif"
} else {
doc = "triy.gif"
}
eval("document.tri" + i + ".src='" + doc + "'")
}
}
</SCRIPT>
<A HREF="viaduc.html" OnMouseOver="s(1)"><IMG SRC="triy.gif" NAME="tri1" BORDER="0">ヴィア・デュック地区</A><BR>
<A HREF="elysee.html" OnMouseOver="s(2)"><IMG SRC="triy.gif" NAME="tri2" BORDER="0">エリゼ宮</A><BR>
<A HREF="madeleine.html" OnMouseOver="s(3)"><IMG SRC="triy.gif" NAME="tri3" BORDER="0">マドレーヌ寺院</A><BR>
<A HREF="Invalides.html" OnMouseOver="s(4)"><IMG SRC="triy.gif" NAME="tri4" BORDER="0">アンヴァリッド</A><BR>
<A HREF="cite.html" OnMouseOver="s(5)"><IMG SRC="triy.gif" NAME="tri5" BORDER="0">シテ島</A><BR>
マウスカーソルが項目に乗ると関数s()が呼ばれます。それぞれ、自分に対応する番号を 引数として渡すように書いてあります。 たとえば、s(3)のときは
document.tri1.src='triy.gif' document.tri2.src='triy.gif' document.tri3.src='trir.gif' ←ここだけ違う document.tri4.src='triy.gif' document.tri5.src='triy.gif'というように画像を設定すればいいわけです。 forループを使って処理したいところですが、tri1, tri2, ...はオブジェクト名で すから変数のようにオブジェクト名を順番に変えていくことはできません。
こんなときに使うのがeval()関数です。eval()は引数で与えた文字列をJavaScript のスクリプトとして実行します。
eval("document.tri4.src='triy.gif'")
のように実行したいスクリプトの文字列を作ってしまえばいいわけです。
書き換える部分を考慮して文字列を作ると
"document.tri" + i + ".src = '" + filename + "'"のようになります。