マウスオーバー関係のスクリプトについて教えて下さい。

[上に] [前に] [次に]
平和堂 2000/06/07(水) 22:31:43
<script language="JavaScript">
<!--
if(navigator.appVersion.charAt(0) >= "3"){
  img = new Array();
  img[0] = new Image; img[0].src = "home.gif";
  img[1] = new Image; img[1].src = "home_s.gif";
  img[2] = new Image; img[2].src = "new.gif";
  img[3] = new Image; img[3].src = "new_s.gif";
}
function chg_img(a,b){  //aは下のnameに、bは上の配列に対応
  if(navigator.appVersion.charAt(0) >= "3"){
    document.images[a].src=img[b].src;
  }
}
//-->
</script>

上のスクリプトはメニュー画像をマウスオーバーで切りかえるというものですが、メニュー画像(項目)を増やす場合は、単にimg[4] = new Image; img[4].src = "****.gif";というように足していけば良いのでしょうか?

if(navigator.appVersion.charAt(0) >= "3"){ ←ここの(0)とか"3"とかは何を表しているのでしょうか?

また、実際に配置する場所には、
<a href="script.htm" onMouseOver="chg_img('img1',1)" onMouseOut="chg_img('img1',0)"><img border=0 name="img1" src="home.gif"></a>
と記入するようですが、
カッコ内の'img1',1
       ↑この数字は
img[0] = new Image; img[0].src = "home.gif";
  ↑これを参照するのか

それとも

img[0] = new Image; img[0].src = "home.gif";
             ↑これを参照するのか

どっちなのでしょうか?

すごーく分かりにくい質問でごめんなさい。

神大二健 [HomePage] 2000/06/07(水) 23:44:07
私もあんまり詳しくないので(^_^;)わかる事だけ書きます。

>if(navigator.appVersion.charAt(0) >= "3"){ ←ここの(0)とか
>"3"とかは何を表しているのでしょうか?

navigator.appVersionはブラウザのバージョンを書き出すオブジェクトですね。
http://www.tohoho-web.com/wwwjsx29.htm
を参考にしましょう。

charAt(0) はnavigator.appVersionで読み込んだ文字列の一番始め
(つまり0文字目)の文字を書き出します。

で、それが >= "3"であれば、以下のスクリプトを実行せよ、
とまあそんな式になってる訳です。
要するにブラウザの振り分けですね。

この場合、NN3かIE4以上だと動くスクリプトと考えてもいいでしょう。
(IE3だと数値を2で返す事があるみたいですから。)

間違ってたらメンゴ。

Fishbone [HomePage] 2000/06/09(金) 23:43:47
img[0] = new Image; img[0].src = "home.gif";
img[1] = new Image; img[1].src = "home_s.gif";
img[2] = new Image; img[2].src = "new.gif";
img[3] = new Image; img[3].src = "new_s.gif";

は、画像をキャッシュにいれて、マウスがふれた時にすぐ画像を表示するための記述です

>カッコ内の'img1',1

これは、<img border=0 name="img1" src="home.gif">で指定した
name=img1を表します。カンマで区切ってる右側の数字の1の方は、
img[1] = new Image; img[1].src = "home_s.gif";
で指定した画像を表示させるって意味です。だから参照してるのは
右側の数字の1でimg[1].srcの値の"home_s.gif"ってことになるんじゃないかな?

通りすがり1号 2000/06/11(日) 11:35:16
'img'は''が付いてますよね。
これはただの文字列で、何も指していません。

で、
>document.images[a].src
この記述によって、初めて文書内でimgという名前のついた
画像オブジェクトのアドレスを指すようになります。

この場合は、
>name="img1"
で名前が付けられた画像のアドレスを指してます。

halimao [E-Mail] 2000/06/12(月) 14:45:18
>chg_img(a,b){//aは下のnameに、bは上の配列に対応
とありますように、
onMouseOut="chg_img('img1',0)"の記述でaに「img1」、bに「0」が入ります。
で、document.images[a].src=img[b].src;
というところで、「img1」の所にある画像を、上の配列「0」番目のものに変える処理をします。
<img border=0 name="img1" src="home.gif">←ここでネームを「img1」と設定しています

img[0] = new Image; img[0].src = "home.gif";
これは配列0番目にhome.gifを入れておくという処理です。

という解釈であってるはずですが。間違いあったらごめんなさい(^^;
説明下手なくせにでしゃばってすいません(^^;

[上に] [前に] [次に]