画像をオンマウスでランダムに切り替え

[新着] TAG indexオフライン版 3.0 を準備中です



0   名前: ラン : 2007/03/17(土) 12:28  ID:vRlzJs5R sub-bK
「画像」「オンマウス」「ランダム」で検索してみましたが該当しなかったので質問させていただきます。

画像をオンマウスで別の画像を表示させるJavaScriptがあると思いますが、その、オンマウスで切り替わる画像の表示をランダムにしたいのですが、そのようなことは可能でしょうか?

例えば、普通はAの画像を表示させていて、その画像の上にマウスが来ると、BやC又はDなどの画像がランダムに表示される、ということです。

不可能かもしれませんが、もし可能でしたらよろしくお願いします。m(__)m

1   名前: 匿名 : 2007/03/17(土) 12:28  ID:WrxlkEBt sub-L2
普通に可能だと思うんだけど、どの辺が分からないの?今までに自分で書いてみたコードを見せてもらえると話が早い。

2   名前: ラン : 2007/03/17(土) 12:28  ID:ei3kNpba sub-bK
匿名さん、お返事ありがとうございます。
画像のオンマウスでランダム表示が可能かどうかを確かめたくて投稿したので、実はまだ自分で作成はしていないのです。申し訳ございません。
記述例があれば設定可能なのですが、どこを探しても見つかりませんでしたのでここに投稿しました。
もしご迷惑でなければ参考の記述例を教えていただけると助かります。

勝手なお願いで申し訳ございませんが。

3   名前: ラン : 2007/03/17(土) 12:28  ID:ei3kNpba sub-bK
調べてみました。これらをどう組み合わせればオンマウスでランダム表示が可能になるのでしょうか。

<画像をオンマウスで切り替える>
<SCRIPT language="JavaScript">
<!--
function changeImage1(){
document.myimg.src="img2.gif";
}
function changeImage2(){
document.myimg.src="img1.gif";
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<A href="#" onMouseOver="changeImage1()" onMouseOut="changeImage2()"><IMG src="img1.gif" name="myimg" border=0></A>
</CENTER>


<画像をオンマウスで拡張させて切り替える>
<SCRIPT language="JavaScript">
<!--
img=new Array();
for(i=1;i<=4;i++){
img[i]=new Image();
img[i].src="img"+i+".gif";
}
function changeImage(i,j){
document.images[i].src=img[j].src;
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<A href="#" onMouseOver="changeImage(0,2)" onMouseOut="changeImage(0,1)"><IMG src="img1.gif" border=0></A><BR>
<BR>
<A href="#" onMouseOver="changeImage(1,4)" onMouseOut="changeImage(1,3)"><IMG src="img3.gif" border=0></A>
</CENTER>
 これはよく意味がわかりません(--;)
 数字の(0,2)(1,4)などは比率を現すのでしょうか?? サイズではないようですが…。


<画像をランダム表示させる>
<SCRIPT language="javascript">
<!--
var img=new Array("h1.gif","h2.gif","h3.gif");
document.write('<IMG SRC="'+img[Math.floor(Math.random()*img.length)]+'">');
//-->
</SCRIPT>


ド素人ではないのですがhtmlをいろいろ工夫するまでの技術がありませんので、どうぞよろしくお願い致します。m(__)m

4   名前: 匿名 : 2007/03/17(土) 12:28  ID:zVbAQGuv sub-kJ
> <SCRIPT language="JavaScript">

理由なく language 属性なんて使ってるスクリプトは使わない方が良い。HTML を分かっていない証拠だから。

> <IMG src="img1.gif" name="myimg" border=0>

言うまでもないことながら、img 要素には alt 属性を忘れずに。name 属性ではなく id 属性を使ってくれ(不安なら両方並記のこと)。

> function changeImage(i,j){ document.images[i].src=img[j].src; }
> onmouseover="changeImage(0,2)"

mouseover 時、ページ内で、0 番目(最初)の画像を、img2.gif に変更する。

> onmouseover="changeImage(1,4)"

mouseover 時、ページ内で、1 番目(二番目)の画像を、img4.gif に変更する。

> img[ Math.floor(Math.random() * img.length) ]

Math.random() は 0〜1 の範囲のランダムな小数を返すから、画像数を掛け合わせれば、0〜画像数までのランダムな小数になる。Math.floor() で小数点以下を切り捨てれば、0〜画像数の範囲のランダムな整数を得られる。

5   名前: 匿名 : 2007/03/17(土) 12:28  ID:zVbAQGuv sub-kJ
Firefox、Opera、Safari(ついでに IE5.5+)用。以下をページ内の適当な場所に置くだけ。
<script type="text/javascript">/*@cc_on@*/

if (document.implementation &&
    document.implementation.hasFeature ('HTML', '1.0') &&
/*@if (@_jscript)
    @_jscript_version > 5.5 &&
  @else@*/
    document.implementation.hasFeature ('MouseEvents', '2.0') &&
/*@end@*/
    typeof Function.prototype != 'undefined'
) {

var MouseOverListener = function (event) {
    arguments.callee.prototype.handleEvent (event);
    return arguments.callee;
};

MouseOverListener.prototype = {
////////////////////////////////////////////////////////////////////////
// ページ内で、左の画像にポイントすると右の画像(ランダムに 1 つ)に切り替わる。
// ポインタを外すと元に戻る。数は自由。

    'sample1-1.png' : [ 'sample1-2.png', 'sample1-3.png', 'sample1-4.png' ],
    'sample2-1.png' : [ 'sample2-2.png', 'sample2-2.png' ],
    'sample3-1.png' : [ 'sample3-2.png', 'sample3-3.png', 'sample3-4.png', 'sample3-5.png' ],

// 設定ここまで
////////////////////////////////////////////////////////////////////////
    
    src : '', idx : 0,
    handleEvent : function (event) {
/*@if (@_jscript)
        var t = window.event.srcElement;
        var r = window.event.fromElement;
  @else@*/
        var t = event.target;
        var r = event.relatedTarget;
/*@end@*/
        if (r) {
            if (r.nodeName == 'IMG') {
                var src = this.parse (r.src);
                
                if (src == this[this.src][this.idx]) {
                    r.src = this.src;
                }
            }
        }
        if (t.nodeName == 'IMG') {
            var src = this.parse (t.src);
            
            if (this[src]) {
                this.src = src;
                this.idx = Math.floor (Math.random () * this[src].length);
                t.src = this[src][this.idx];
            }
        }
    },
    parse : function (uri) {
        var tmp = uri.split (/[/\\]/g);
        return tmp[tmp.length - 1];
    }
};

document./*@if (@_jscript) attachEvent ('on' + @else@*/
         addEventListener (/*@end@*/'mouseover', MouseOverListener, false);
}
</script>

6   名前: ラン : 2007/03/17(土) 12:28  ID:1kmk3qHb sub-bK
おおおっ!(ToT) ありがとうございます!!!
昨夜>>4のお返事を元にあれこれ書いてみたり調べてみたりしていたのですがわからず、もう一度質問せねばと思っていました。
こんなに詳しい記述例をいただけるなんて… 本当にお礼のしようがありません。
心から感謝申し上げます。

さっそく試してみて、ご報告申し上げます。
お手数かけて申し訳ございません。

7   名前: ラン : 2007/03/17(土) 12:28  ID:z1RVqITw sub-bK
正常に動作しました!!
本当にありがとうございました。心より感謝申し上げます!
ご親切なアドバイス、本当にありがとうございました。m(__)m

一覧へ戻る