テーブルからマウスが出た時の処理方法について

このQ&Aのポイント
  • テーブルからマウスが出た場合に実行する処理方法について教えてください。
  • テーブル内のセルを移動するごとに関数が動いてしまうため、テーブル全体からマウスが出た時に実行する方法を教えてください。
  • テーブルを一つの空間として考え、そこからマウスが出た時に予備処理を実行する方法について教えてください。
回答を見る
  • ベストアンサー

tableについて

いつもお世話になっております。 今回はテーブルについてお聞きします。 現在、テーブルからマウスが出て行った際にある処理をしたいと思っています。 そこで以下のようにしてみたところ <table onmouseout="function()"> 各セルを移動するごとにこの関数が動いてしまったので、 <div onmouseout="function()"> <table> ... </table> </div> とやってみましたが結果は同様でした。 テーブルを一つの空間として、そこからマウスが出たらfunctionを予備隊のですがこの場合はどのようにすれば実現できるのでしょうか? ご教授願います。

  • HTML
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • leap_day
  • ベストアンサー率60% (338/561)
回答No.1

こんにちは 2つあります 【A】onmouseoverでfunctionを設定しておく(table内でのonmouseoverは使用できなくなります) <style type="text/css"><!-- table { width:300px; height:500px; background-color:lavender; } --></style> <script type="text/javascript"><!-- function r() { document.getElementById("test").innerHTML = "test"; } function r0() { document.getElementById("test").innerHTML = "test false"; } //--></script> <div id="test"></div> <table onmouseover="r0()" onmouseout="r()"> <tr> <td>a</td><td>b</td> </tr><tr> <td>c</td><td>d</td> </tr> </table> 【B】(そのtableが表示のみであれば)透過gifなどをtable上にかぶせてそちらにonmuseoutを設定する(table内の作業(function 呼び出しやリンクなど)まったくできなくなります) <style type="text/css"><!-- table { width:300px; height:500px; background-color:lavender; } #base { position:relative; } #base img { position:absolute; top:0px; left:0px; width:300px; height:500px; } --></style> <script type="text/javascript"><!-- function r() { document.getElementById("test").innerHTML = "test"; } //--></script> <div id="test"></div> <div id="base"> <table> <tr> <td>a</td><td>b</td> </tr><tr> <td>c</td><td>d</td> </tr> </table> <img src="visible.gif" onmouseout="r()"> </div>

関連するQ&A

  • マウス位置取得方法

    いつもお世話になっております。 現在tableの各セルにonmouseoverを入れて、マウスの動きに追従してセルの色が変わるものを作っています。 その際、マウスを高速で動かすとマウスに色の変化が付いてこない状態になってしまいます。 原因は td.style.backgroundColor="#FFOOFF" という処理は行われているのですが、マウスを動かし続けるとonmouseoverが呼ばれ続けて、styleの表示の反映が遅れているようです。 そこで解決する方法を考えて調査したのですが方法がわからなかったのでお聞きします。 方法)onmouseoverが呼ばれたセルと現在マウスがあるセルを比較して違うものであった場合、関数を終了する。 この方法は、マウスが連続して動いているときは関数を処理しないでおく方法ですが、関数を呼ばれた後にマウスが動いたことを察知する方法がわかりません。 javascriptはマルチスレッドができないので、関数のそのステップ現在でのマウスの位置を知る方法がありましたらご教授願います。 現在のコードは以下のようなものです。 <script> function hoge() { //通過したセルの色を変える } </script> <table> <TR> <TD onmouseover="hoge();"></TD> ..... <TD onmouseover="hoge();"></TD> </TR> </TABLE> このようなtableのセルが300ほどあります。 以上、何かできることがありましたら、ちょっとしたことでも情報をいただきたいです。 よろしくお願いします。

  • OnMouseout()内部タグへ移動しても発生してしまう

    いつもお世話になります。 OnMouseout()についてですが、内部タグへ移動しても発生してしまい困っています。 下のスクリプトで、灰色の<div>タグを出たときOnMouseout()イベントが発生し、<div>タグ内にマウスポインタががある内はOnMouseout()が発生してもらいたくないのに<div>タグ内にある<table>タグ内へ移動したときも発生してしまいます。 z-indexで、<div>タグを一番上に表示すれば良いかとやってみましたが、だめでした。 おわかりになる方なにとぞよろしくお願いいたします。 function tstOnMouseout(){ strHtml='<div style="width:200px;background-color:Silver;z-index:10;" onmouseout="this.innerHTML=\'bbbbbb\';">'; strHtml+='<table style="margin:50px;background-color:white;z-index:1;">'; strHtml+='<tr><td style="border:solid red 5px;">aaaaaaaaa</td></tr>'; strHtml+='</table>'; strHtml+='</div>'; document.write(strHtml); }

  • tableにまとめて関数

    いつもお世話になっております。 今回はtableについてお聞きしたいです。 現在tableの各セルに同じ関数を適用するために以下のようにしています。 <table> <TR> <TD onclick="hoge();"></TD> <TD onclick="hoge();"></TD> ... <TD onclick="hoge();"></TD> </TR> </table> これを一つのtableすべてのTDについて行っているのですがファイルサイズを削りたいということになったので何とかまとめたいと思ったのですがうまい方法がわかりませんでした。 もし方法があるのでしたらご教授をお願いします。

  • テーブルの背景色を複数変更する

    テーブルにて、onMouseOverで背景色を変え、 onMouseOut にて背景色を戻すスクリプトを作っています。 セル一つならば変更できますが、複数のセルに依存関係があり、依存関係があるセル同士はそのセルにマウスオーバーされると依存関係があるセル全ての色を変更したいと思っています。 いろいろと探しているのですが、見つかりません。 以下のようなサンプルで 1 と 4 が一緒に変更できないものでしょうか。 よろしくお願いします。 <html> <head> <title>テーブルの色を変える</title> <script language="JavaScript"> <!-- // b_color(idname,cn); // 背景色を変える // idname: 色変更したいタグid; // cn:色変更法 function b_color(idname,cn) { // alert(idname); // debug alert if (document.getElementById) { document.getElementById(idname).style.backgroundColor = cn; }else{ // alert("あなたのブラウザには対応しておりません。"); } } if (! document.getElementById) { document.write("あなたのブラウザには対応しておりません。マウスを動かしても色は変えられません。<br>"); // マウス移動でいちいちalertが出ると煩わしいので、最初に表示しておく } //--> </script> </head> <body> <table border="1"> <tr> <td id="11" bgcolor="#cccccc" onMouseOver="b_color('11','#ff0000');" onMouseOut="b_color('11','#0000ff');">ここ1</td> <td>ここ2</td> </tr> <tr> <td>ここ3</td> <td id="11" bgcolor="#cccccc" onMouseOver="b_color('11','#ff0000');" onMouseOut="b_color('11','#0000ff');">ここ4</td> </tr> </table> </body> </html>

  • 並び替えは、絶対テーブルでしかできませんか。

    div要素でも並び替えがしたいです。 <div class="table"> <div class="row"> <div class="cell">内容1</div> <div class="cell">内容2</div> <div class="cell">内容3</div> </div> <div class="row"> <div class="cell">内容4</div> <div class="cell">内容5</div> <div class="cell">内容6</div> </div> </div> <style> #sort_table { border-collapse:collapse; } #sort_table td { border:1px solid lightgray; } #sort_table th { cursor:pointer; background-color:lightgray; } </style> 以上でもテーブルは作れます。しかし、これでは、並び替えができません。 https://blog.ver001.com/javascript-table-sort/ なぜなら通常はテーブル要素で書くからです。 しかしテーブルには弱点があり、<td>や<th>にしか、divや、pといったタグを置くことができません。 しかし、これだと、セルを変えることができません。 先ほどいただいた <script> function viewChange(){[Box1,Box2,Box3].forEach((a,b)=>a.style.display=sample.selectedIndex==b?'':'none')} window.onload = viewChange; </script> というご回答だと、1つのテーブルしか表示が不可能です。 これがdivだと何個も表示ができますが、いかんせん並び替えができないのです。 jsだけで、プログラムのインストールなし、オフラインでかつ、ごちゃごちゃしたjqueryも使わないというのは贅沢な願望でしょうか。 後僕は天才ではないので、断片的な情報から組み合わせて1つのものを完成させる能力はないです。 お願いです。力をお貸しください。

  • テーブルのセルのクリック時、セル内の文字を太くするには

    テーブルのセルをクリックした際に、セルの中に入っている文字を太字にする方法が分からず困っています。 ちょっと複雑なテーブル構造になっているのですが、具体的には、以下のような仕様で作成しています。 div要素上でクリックしたら、特定のセルの文字(この場合、id='text1'のセル)の文字を太字にしたいのです。 なお、OnClick時の処理は、外部JavaScriptで行います。 <table> <tr> <td> <div id='div1' textid='text1' onclick="ChgText(event,this)"> <table width='100%'> <tr> <td width='10%'>あああ</td> <td id='text1'>いいい</td> </tr> </table> </div> </td> <tr> </table> イベント元であるdiv要素と、処理対象のTDを関係付けるために、div要素内に「textid='text1'」定義し、外部JavaScriptでは、document.getElementByIdで処理対象を特定し、最終的には、文字を太くしたいと考えています。 外部JavaScriptの概要は以下の通りです。 function ChgText(ev,item){ var text_item = null; text_item = item.tdtext_id; var chgText = document.getElementById(text_item ); chgText.style.font-weight = bold; } 上記の内容で実行しても、文字の太さは変わりませんでした。 フォントの指定の仕方がまちがっているのでしょうか? それとも、そもそも、div要素より後に定義されるTDタグのIDをdiv要素自身が認識しないのでしょうか? 根本的な考え方が間違っているかもしれないので、よきアドバイスをいただけるとありがたいです。 よろしくお願いいたします。

  • cssの中にテーブルを入れると崩れる。

    html+CSSでページを作っていて 途中にテーブルを入れると レイアウトが崩れます。 テーブルのすぐ右横に次の見出しが来てしまったりします。 どうしたらいいでしょうか? <body> <div id="wrapper"> <div id="header"> ~略~ </div> <div id="contents"> <h2> ●●● </h2> <h3> ●●● </h3> 例えばココに<table>~</table> <h2> ●●● </h2> <h3> ●●● </h3> </div> </div> </body> とするとこのテーブルの真横に次の<h2>が来てしまいます。 テーブルの用途は料金表などで、レイアウト的に使うのではありません。 どなたかご教授下さい。 宜しくお願いいたします。

    • ベストアンサー
    • CSS
  • 2つのテーブルの幅を一致させたい

    以下のHTMLで、2つのテーブルのセル幅が一致しません。 JavaScriptではヘッダのセル幅をボディのセル幅に合わせています。 ボディ部分の文字列をすべて日本語にするとうまくいくのですが・・・ JavaScriptというよりはHtmlの問題な気がしますが、よろしくお願いします。 jqueryを使用しています。 <html> <head> <script src="js/jquery.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { headerTableWidthFit(); }); $( window ).resize(function(){ headerTableWidthFit(); }); function headerTableWidthFit() { var i = 0; $('#resultBodyTable table tbody tr:eq(0) td').each(function() { $('#resultHeaderTable table th').eq(i).width($(this).width()); i++; }); } </script> </head> <body> <div id="container"> <div id="resultHeaderTable" class="headerTable"> <table border="1" cellspacing="0" cellpadding="0"> <thead> <tr> <th>あ</th> <th>い</th> <th>う</th> <th>え</th> <th>お</th> <th>か</th> <th>き</th> <th>く</th> </tr> </thead> </table> </div> <div id="resultBodyTable" class="bodyTable"> <table border="1" cellspacing="0" cellpadding="0" width="100%"> <thead> </thead> <tbody> <tr> <td>あaaaaaa</td> <td>い</td> <td>う</td> <td>え</td> <td>お</td> <td>か</td> <td>き</td> <td>く</td> </tr> </tbody> </table> </div> </div> </body> </html>

  • テーブル内のスクロール

    初めて質問いたします。 HTML構文をきちんと理解しないまま、サイトをつくってしまっていますが、ひとつ困っていることがあります。テーブルの中のひとつのセルの高さサイズを固定してその中につくったテーブルを縦にスクロールさせています。winではうまく表示できるのですが、mac環境の人からスクロールしないと言われました。ブラウザはIE5と聞いています。以下のような構文にしていますが、なにか間違えているのでしょうか?どなたか教えていただけると助かります。よろしくお願いいたします。 <table width="620" border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF"height="500"> <tr> <td height="60" valign="top"> </td> </tr> <tr> <td> <div align="center"> <div style="height:400px;width:600px;overflow-y:scroll;"> <table width="600" border="0" cellspacing="0" cellpadding="0"> </table> </div> </div> </td> </tr> </table>

    • ベストアンサー
    • HTML
  • tableタグに右に回り込みの位置

    tableタグに右に回り込みを入れたのですが<table align="left"> CSSのでtable全体と回り込みをした文字を上の方に移動させたいのですが これが回り込みをした文字しか移動しなくて困っています。 <div style="position:relative; bottom:20px"> <table border=1 align="left"> <tr> <td>表の内容</td> </tr> </table> 回り込み </div> が例えなのですが、何か打開策など御座いませんか?

専門家に質問してみよう