WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:javascriptの画像

0:[投稿] toy [MAIL] [URL] [2002/11/04 07:40 ][環境:WIN+IE UNIX系+Perl]

ただいま,サイトをリニューアルしようと思っているのですが
どうも思い通りのスクリプトが書けません。
始めに↓を見ていただきたいのですが,

http://www.villvalley.com/menu/index2.htm
このボタンは
onmouseover,onmousedown,onmouseout,onmouseupを
使用しています。

onMouseOverで箱の文字が変わり
onMouseDownで小さな箱がでてき,
onMouseUpで箱が空になって,
onMouseOutでまた元の箱に戻るというものなのですが、
もし,選択した箱だけが空の状態になり,
他のボタンをクリックするとまた元に戻るという感じにして
みたいのです。

OnMouseUpの時にはOnMouseOutが無視され,
また他のボタンをたたいた時(OnMouseDown)には
それがリセットするようにするにはどうしたらいいのでしょうか?

ただいま自分なりに考えたのが

var genzaiNoMode = "";

function changeImage(i, j, dousa) {

 document.images[i].src=img[j].src;
 
   if ((genzaiNoMode == "up") && (dousa == "out")) {
     return;
   }
   genzaiNoMode = dousa;
     
}

しかし初心者ですのでこれ以上が…

少し説明不足なところがありますが,
書いている意味がわからないというときはそう書いてください。
もう一度熟考して書かせていただきます。
お時間がございましたら,返信お願いします

villvalley.com


1:[回答] ween [2002/11/04 12:40 ]

整理すると:
・onMouseOut では、箱が選択されてない時だけ画像を変更したい。
・onMouseDown では、今まで選択されていた箱をonMouseOutの状態にしたい。
…ですよね。
このとき、それぞれの場面で知りたい情報は
「今選択されている箱(最近MouseUpしたリンク)はどれか」ということです。
MouseUp したリンクを変数に保存すれば解決できそうです。

checked=null; // onMouseUp したリンクを格納する変数
function resetBox () {
 if(checked==null)return;
 var x=checked;
 checked=null; x.onmouseout();
}

<a href="#"
onMouseOver="changeImage(1,10)"
onMouseOut ="if(this!=checked){changeImage(1,2)}"
onMouseDown="resetBox();changeImage(1,11)"
onMouseUp  ="checked=this;changeImage(1,12)"
><img ... ></a>

mouseOver でも同様のことをしたければ、
同じように onMouseOver="if(this!=checked){...}" です。


2:[質問] toy [MAIL] [URL] [2002/11/04 18:30 ]

ween様,
ありがとうございます!!!
嬉しくてたまりません。

ただ,IMで試しに見てみると,『'checked'は
宣言されてません』というエラーがでるのです…
でも正常に動いているんです…
ちゃんと望みどおり,OnMouseUpでは画像がそのまま止まって,
それ以外ならちゃんとOnMouseOutになるんですが…
こういうエラーにはどのような対処すればいいのでしょうか?


3:[質問] toy [MAIL] [URL] [2002/11/04 18:45 ]

ween様,

ど素人ですので,もう一つ質問していいですか。
mouseoverの時は

>mouseOver でも同様のことをしたければ、
>同じように onMouseOver="if(this!=checked){...}" です。

とありますが,そのまま
onMouseOver="if(this!=checked){changeImage(1,10)}"
のようにするだけでいいのですか?
一度試してみたのですが…うまくいきませんでした。
お時間があるときで結構ですので教えてください。
本当に手間のかかる質問をしてすいません。


4:[回答] ween [2002/11/04 20:00 ]

> ただ,IMで試しに見てみると
すみません IM って何でしょうか…

・最初の checked=null; でスペルミスをしている
が一番ありそうかなと思うんだけれども、そうでなかったらなんだろう…。
手元の IE6 で試したところでは
onMouseOver="if(this!=checked){changeImage(1,10)}" も
問題なく動いたんですが。


5:[完了] toy [MAIL] [URL] [2002/11/04 20:14 ]

ween様

うっ…すいません…IEです…
ど素人が略語など使ってしまった罰ですね…
それとありがとうございます。
僕のミスでした。
いまやってみたら、エラーがでませんでした。
ween様はサイトはもってらっしゃらないのですか?
もしLINKさせていただけませんか?
本当にありがとうございました。
感謝です!!

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World