• ベストアンサー

ロールオーバーについて

お世話になります。ドリームウィーバーでスワップイメージの設定をすると function MM_findObj(n, d) { //v4.01 以下省略 というスクリプトを書き出してくれます。 そのスクリプトの意味がわかりません… 何をやってくれているのでしょうか。それがないと、マウスオーバーした時にイメージが変わらないのですが、知っている方いましたら、詳しく教えていただきたいです。 すみませんが、よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答No.1

質問で提示されている情報だけでは、何をしているのかまったくわかりません。 先にあった質問の内容と照らし合わせて、検索サイトでそれについて解説しているページを探してみましたが、Dreamweaverで吐き出すこの関数は、ご質問にあるスワップイメージの処理の際には、スワップイメージの対象となるドキュメントをオブジェクトとして取得し、呼び出し元に返す関数のようです。 この関数については、それを呼び出している部分を探して、何とどのように連携しているのかを俯瞰してから、細部を見たほうが良いと思いますよ。 この関数だけを見ても、システムに組み込まれている一部品でしかないので、全体像がつかみ難いでしょう。 まずは、渡されている引数の内容を把握してから、この関数の内容を考える方がよいと思います。 ですので、まずはその関数を呼び出している呼び出し元を探し、その記述内容を検討・把握してからこちらの関数の内容を検討するのが良いと思いますよ。 参考まで。

tsuyudaku
質問者

お礼

そうですね。勉強してからもう一回お願いします!

関連するQ&A

  • Javaのロールオーバーについて教えてください

    質問させていただきます。 DreamweaverCS3にてWEBサイトを作成しているのですが、メニューボタンにロールオーバー画像スワップの効果を付け加える必要がでてきました。 メインページであるindexに対してDWのビヘイビア機能を使い、index自体にはロールオーバーを実現することができました。 付け加えたソースコードを外部JAVAファイルとして切り分け、他のページにも適用したいのですが、javascriptのどの部分を変更すれば、全ページに適用されるのかわかりません。 スクリプトは以下のとおりです。 <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> 「index」となっている部分を何らかに変更すれば実現できるのではないかと考えたのですが、まったくわかりません。 どなたか詳しい方、ご教示いただけると幸いです。

  • ロールオーバーの処理で「最初の画像→click→ロールオーバーの画像→click→Yahoo!」という処理は出来ますか?

    Java Script初心者です。 画像をonclickでロールオーバさせています。 最初の画像をクリックするとロールオーバのイメージになり、その状態でもう1度クリックするとリンクに飛ばすことは出来ますか? やりたい事は以下のような処理です。 最初の画像→click→ロールオーバーの画像→click→Yahoo! 現在はロールオーバーの画像までは表示できましたが、その画像にリンクを貼ることができません。 色々調べましたら分かりませんでしたので、分かる方がいらっしゃいましたら教えてください。 --------------------------HTML-------------------------- <img src="images/image_01.jpg" id="Image1" alto="EVENT" onclick="MM_swapImage('Image1','','images/image_over_01.jpg',1)" onmouseout="MM_swapImage('Image1','','images/image_01.jpg',1) /> ------------------------Java Script-------------------------- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} }

  • 画像のロールオーバー

    Dreamweaver8のビヘイビアのスワップイメージを使って 画像のロールオーバーを再現したいのですが 思い通りにいきません。 実装したいこと ---------------------------------------------------- 画像Aをマウスオーバーで画像Bに変わる クリックでオーバーした状態を保持(画像Bのまま) さらに、画像Cをマウスオーバーで画像Dに変わり クリックでオーバーした状態を保持(画像Dのまま) そのクリック時、画像Bが画像Aに変わる ---------------------------------------------------- http://h2ham.up.seesaa.net/html/bgimage-change03.html の上の画像のような感じです。 これを実装を助けて頂きたいです。 スクリプトが書けず、Dreamweaverのビヘイビアしか 対応できない為、詳しく解説いただけたら嬉しいです。 もしくは参考サイト、サンプルソースなどありましたら 助かります。 よろしくお願いします。

  • javascriptタグを外部にしたい

    <script type="text/javascript"> <!-- function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> DWでデフォルトでロールオーバーイメージを使ってスクリプトが出ています。SEO的にこれを外部に移したいのですが、どうやればいいのでしょうか?CSSと同じ記述でいいのでしょうか・・・ SEO的にはスクリプト自体使わないほうがいいのはわかっています

  • オンマウスで画像ロールオーバー+テキスト変更

    こんにちは、javascript初心者です。 現在、Dreamweaver CS4でサイトを作っています。 以下のような構成になっており、menuの画像をオンマウスすると、ロールオーバーして画像の色が変わるようにしています。 (javascriptはDreamweaverが自動生成しています) ▼ココカラ ------------------------------------------ <head> <script type="text/javascript"> <!-- function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> </head> <body> <div id="menu"> <a href="a.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('menua','','a2.jpg',1)"><img src="a.jpg" alt="a" name="menua"></a> <a href="b.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('menub','','b2.jpg',1)"><img src="b.jpg" alt="b" name="menub"></a> <a href="c.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('menuc','','c2.jpg',1)"><img src="c.jpg" alt="c" name="menuc"></a> <a href="e.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('menud','','d2.jpg',1)"><img src="d.jpg" alt="d" name="menud"></a> </div> <div id="submenu">挨拶文</div> <div id="main"></div> <div id="footer"></div> </body> </html> ▲ココマデ ------------------------------------------ このメニューのオンマウスですが、ロールオーバーの動作は残したまま、submenu部分の挨拶文を各ページのサブメニューに差し変えることは可能でしょうか? (aのメニューをオンマウスすると画像の色が変わり、aのサブメニューがsubmenuに表示される等) 同じような事例を見つけたのですが、 http://okwave.jp/qa/q4651643.html こちらは画像が1箇所だったので、初心者の私では応用の仕方が分かりませんでした。 現在のjavascriptに追加する形でもまったく違うものでも良いですので、ご教授いただけると助かります。 よろしくお願いいたします。

  • 文字列型定数?

    この度、カウンタを埋め込みましたが どうしても、上記タイトルのスクリプトエラー が発生します。 <head> <script language="JavaScript"> <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_findObj(n, d) { //v3.0 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> </head> 文字オーバーの為次へ(文字列型定数2)

  • リモートロールオーバーで画像と一緒にテキストも切り替える方法

    初投稿です。 当方ジャバスクリプト初心者です。 Dreamweaverで画像(メイン画像が1枚、サムネイル画像が30枚ほどあります)のリモートロールオーバーをやったのですが、同時にテキスト(説明文5行ほど)も一緒に表示・切り替えする方法が知りたいです。 ジャバスクリプトで出来るのですか? 全く検討もつかないので、どうか宜しくお願いします。 ■以下現状のhtmlです。尚、練習用なのでスタイルシートは真っ白です。■ <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>無題ドキュメント</title> <link rel="stylesheet" type="text/css" href="index.css" /> <script type="text/JavaScript"> <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> </head> <body onload="MM_preloadImages('img/l_mitudera.jpg','img/l_aigou.jpg','img/l_jyuzo.jpg','img/l_kyobashi.jpg','img/l_noda.jpg')"> <img src="img/l_mitudera.jpg" width="300" height="260" name="main"><br /><br /> <img src="img/s_mitudera.jpg" width="75" height="65" onmouseover="MM_swapImage('main','','img/l_mitudera.jpg',1)" onmouseout="MM_swapImgRestore()" /> <img src="img/s_aigou.jpg" width="75" height="65" onmouseover="MM_swapImage('main','','img/l_aigou.jpg',1)" onmouseout="MM_swapImgRestore()" /> <img src="img/s_jyuzo.jpg" width="75" height="65" onmouseover="MM_swapImage('main','','img/l_jyuzo.jpg',1)" onmouseout="MM_swapImgRestore()" /> <img src="img/s_kyobashi.jpg" width="75" height="65" onmouseover="MM_swapImage('main','','img/l_kyobashi.jpg',1)" onmouseout="MM_swapImgRestore()" /> <img src="img/s_noda.jpg" width="75" height="65" onmouseover="MM_swapImage('main','','img/l_noda.jpg',1)" onmouseout="MM_swapImgRestore()" /> </body> </html>

  • ソースの内容の一部を具体的に説明できますか?

    私はWEBデザイナーなんですが、お客様にマウスオーバーのソースでわからないところを説明してくれと言われました。 ただ、マウスオーバー自体はDreamweaverで自動でスクリプトを書いているので、正直チンプンカンプンです。 ぜひ以下について教えていただけないでしょうか? ************************************************** ■indexOf("#")、indexOf("?") は、それぞれどういうものなのでしょうか? ■document.MM_sr、document.MM_p には、それぞれ何のデータが格納されているのでしょうか? ■また、上記2つ以外の全体的な質問以外に個別の質問として「>>」で差し込ませていただいております。 めちゃくちゃ長いですが、どうかよろしくお願いいたします。 ■画像を元に戻すための処理 function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } ■画像の先読みのための処理 function MM_preloadImages() { //v3.0 var d=document; if(d.images) { if(!d.MM_p) d.MM_p=new Array(); var i, j=d.MM_p.length, a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i]; } } } ■画像の名称管理 function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p); } if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); >>この部分は何のための処理なのか? (再帰的呼び出しまで行っているが、何をしているのか?) この部分がなくてもx=d.getElementById(n)によって目的が達成されるように思えるが、どこが間違っているか教えてほしい。 if(!x && d.getElementById) x=d.getElementById(n); return x; } >>この関数は、document.MM_pの中から、指定された名前のものを探すかと思っていたが、それで正しいのか? document.MM_pを変数として使用せずに、x=d.getElementById(n)によって処理していても問題なさそうだが、そうすると、MM_preloadImages でdocument.MM_pをセットしている理由がわからなくなってしまうので、教えてほしい。 ■画像のさしかえ処理 function MM_swapImage() { //v3.0 var i,j=0, x, a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null) { document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2]; >> a[i+2]は、img/navon_01.gifでなくて、1を指しているように思える。この関数function MM_swapImageの中でimg/navon_01.gifが使われている部分が見つからないが、実際はどこかで使わないと機能が達成されないので、どこで使っているかを教えてほしい。 } }

  • スワップイメージで画像ではなくhtmlファイルを表示させたい

    わからないので教えてください。 ドリームウィーバーでページを作っています。 スワップイメージの設定をすると、マウスをアイコンの上においたら、別の箇所のイメージ画像が変わりますよね。 イメージ画像ではなくて、htmlファイルを変更させたいのですが、できますか? インラインフレームでできるかなと思ったのですが、どう設定すればいいかわからなくて困っています。 よろしくお願いします。 リンダ

  • dreamweaverについて

    JavaやCSSがサーバーにUPロードしても反映しないのです。 dreamweaverのブラウザーの表示では、確かに確認できるのですが、 CSSのリンクかJavaの宣言に以下のコメントがひっているのですが、これが原因でようか? <link href="file:///F|/ais2008test/mystyle.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> 誰か教えてください!