目次へ戻ります
イヌでもわかるJavaScript講座


リンクの補足説明窓を表示

ハイパーリンクの上にマウスカーソルを持っていくと補足説明を表示するようにします。
難易度:★★★★☆☆☆☆☆☆
【実行例】

はじめに
Step.1
Step.2
Step.3
Step.4

【リスト】
<SCRIPT language="JavaScript"><!--
myBeforeID = "";                   // 前回表示したコメントID
myOP = window.opera;            // OP
myN6 = document.getElementById; // N6
myIE = document.all;            // IE
myN4 = document.layers;         // N4
if      (myOP) myBR="N6"; // ブラウザは OP6以上
else if (myIE) myBR="I4"; // ブラウザは IE4以上
else if (myN6) myBR="N6"; // ブラウザは NS6以上
else if (myN4) myBR="N4"; // ブラウザは NN4
else           myBR="";   // ブラウザは 分からん

function myBrowserObj(myID){ // 使用中のブラウザの取得
  if (myBR=="N6") myRet=document.getElementById(myID).style;
  else if (myBR=="I4") myRet=document.all[myID].style;
  else if (myBR=="N4") myRet=document[myID];
  else myRet=0;
  return myRet;
}
function myIn(myID){                // マウスが乗った
  if (myBeforeID != ""){           // コメント表示中?
    myObj.visibility = "hidden";  // 前回のコメントを非表示
  }
  myBeforeID = myID;               // 今回表示するIDを退避
  myObj = myBrowserObj(myID);      // 使用中のブラウザオブジェクト
  if(myObj){                       // ブラウザ対応?
    myObj.visibility = "visible"; // 新しいコメントを表示
  }
}
// --></SCRIPT>

<a href="hajimeni.htm" onmouseover="myIn('step0')">
はじめに<br></a>

<a href="step1.htm" onmouseover="myIn('step1')">
Step.1<br></a>

<a href="aisatu.htm" onmouseover="myIn('step2')">
Step.2<br></a>

<a href="getdate.htm" onmouseover="myIn('step3')">
Step.3<br></a>

<a href="function.htm" onmouseover="myIn('step4')">
Step.4<br></a>

<div id="step0" style="position:absolute; left:150px;
 top:280px; width:300px; height:100px; z-index:1; visibility:hidden">
<table border="1" cellpadding="6" cellspacing="0" width="300">
<tr><td bgcolor="#008b8b"><font color="#FFFFFF">
はじめに<br>
JavaScriptとは、なんぞやという堅苦しい説明です。最初に読んでも
サッパリと思いますが、とりあえず目を通してください。後になると
わかるようになります。<br>
</font></td></tr></table></div>

<div id="step1" style="position:absolute; left:150px;
 top:280px; width:300px; height:100px; z-index:1; visibility:hidden">
<table border="1" cellpadding="6" cellspacing="0" width="300">
<tr><td bgcolor="#008b8b"><font color="#FFFFFF">
STEP.1<br>いきなりJavaScriptを使ってみましょう<br>
いきなりJavaScriptをつかって、使用中のブラウザ名をホームページ
に表示します。ここをマスターすれば、後は楽勝です。<br>
</font></td></tr></table></div>

<div id="step2" style="position:absolute; left:150px;
 top:280px; width:300px; height:100px; z-index:1; visibility:hidden">
<table border="1" cellpadding="6" cellspacing="0" width="300">
<tr><td bgcolor="#008b8b"><font color="#FFFFFF">
STEP.2<br>あいさつ文を表示してみましょう<br>
ホームページの冒頭でよく見かける、時間によってかわるメッセージ
を表示します。<br>
</font></td></tr></table></div>

<div id="step3" style="position:absolute; left:150px;
 top:280px; width:300px; height:100px; z-index:1; visibility:hidden">
<table border="1" cellpadding="6" cellspacing="0" width="300">
<tr><td bgcolor="#008b8b"><font color="#FFFFFF">
STEP.3<br>現在の日付と時間を表示してみましょう<br>
JavaScriptを使えば、日付や時間、曜日も簡単に表示できます。<br>
</font></td></tr></table></div>

<div id="step4" style="position:absolute; left:150px;
 top:280px; width:300px; height:100px; z-index:1; visibility:hidden">
<table border="1" cellpadding="6" cellspacing="0" width="300">
<tr><td bgcolor="#008b8b"><font color="#FFFFFF">
STEP.4<br>関数化してHTMLソースリストを整理しましょう<br>
長い SCRIPT や数ケ所に同じ SCRIPT を使う場合は関数化して
 HTMLソースリストをすっきりさせましょう。<br>
</font></td></tr></table></div>

サンプルだけのHTMLは こちらへ
【説明】

Step.88 では、ハイパーリンクにマウスが乗ればコメントを表示して、離れればコメントを消すようにしていました。

今回のサンプルは、マウスが離れても、コメントは消さないパターンです。別のハイパーリンク上にマウスが来るまで、過去の表示したコメントが残されます。

では、前回のStep.88をどう、改造したらいいでしょう。
おそらく、思ったとおりです。マウスが離れた場合の処理を取り除けば、いいのです。
Aタグから onmouseout="return myOut('stepX')" は必要なくなります。
ということは、myOut( )関数自体も必要なくなりました。

myIn( )関数からは "visible"myOut( )関数からは "hidden"myDisp( )関数にパラメータとして受け渡して処理をしていました。今回、myOut( )関数がなくなったので、myDisp( )関数は myIn( )関数からしか呼ばれません。ということは、myIn( )が、myDisp( )を呼ぶのも無意味なので、myDisp( )関数そのものを myIn( )関数にして整理しました。

myOut( )関数が無くなったということは、非表示にするというルーチンが無くなりました。いつ、非表示にするか? お察しの通り、新しいコメントを表示する直前に非表示にします。
myID変数には、新しく表示するコメントのIDに変わってしまっています。前回のIDが分からないと、非表示にしようがないので、myBeforeID変数を用意して覚えさせておきました。

参考ステップ
Step.88 リンク先の補足説明窓を表示してみましょう

目次へ戻ります