質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2227閲覧

Javascriptについて質問です。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2015/09/28 10:16

編集2017/04/17 05:41

Javascriptについて以下のソースを見てください。
このソースで受信フォルダにマウスを持っていくとしたのhidden
になっているところが表示され、マウスを離すと、また消える処理
は成功しました。今度はテーブルでhiddenになっているところに
カーソルを合わせると表示し離すと非表示になるようにしたいのですが
うまくいきません。回答お願いいたします。

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <table border="1" style="border-collapse: collapse;"> <tr><td>MENU</td><td id="a1">受信フォルダ</td><td>送信フォルダ</td><td>削除フォルダ</td></tr> <tr><td></td><td id="b1" style="visibility: hidden;" >・メール表示<br/>・削除</td><td style="visibility: hidden;">・メール表示<br/>・削除</td><td style="visibility: hidden;">・・メール表示<br/>・削除</td></tr> <tr><td colspan="4"></td></tr> </table> <script type="text/javascript"> var a1Element = document.getElementById('a1'); var b1Element = document.getElementById('b1'); a1Element.addEventListener('mousemove',func1,false); a1Element.addEventListener('mouseout',func2,false); b1Element.addEventListener('mousemove',func1,false); b1Element.addEventListener('mouseout',func2,false); function func1(){ b1Element.setAttribute("style", "visibility:visible;"); } function func2(){ b1Element.setAttribute("style", "visibility: hidden;"); } </script> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Javascriptについて以下のソースを見てください。
このソースで受信フォルダにマウスを持っていくとしたのhiddenになっているところが表示され、マウスを離すと、また消える処理は成功しました。
今度はテーブルでhiddenになっているところにカーソルを合わせると表示し離すと非表示になるようにしたいのですがうまくいきません。回答お願いいたします。

HTML

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>Insert title here</title> 6</head> 7<body> 8<table border="1" style="border-collapse: collapse;"> 9<tr><td>MENU</td><td id="a1">受信フォルダ</td><td>送信フォルダ</td><td>削除フォルダ</td></tr> 10<tr><td></td><td id="b1" style="visibility: hidden;" >・メール表示<br/>・削除</td><td style="visibility: hidden;">・メール表示<br/>・削除</td><td style="visibility: hidden;">・・メール表示<br/>・削除</td></tr> 11<tr><td colspan="4"></td></tr> 12</table> 13<script type="text/javascript"> 14var a1Element = document.getElementById('a1'); 15var b1Element = document.getElementById('b1'); 16a1Element.addEventListener('mousemove',func1,false); 17a1Element.addEventListener('mouseout',func2,false); 18b1Element.addEventListener('mousemove',func1,false); 19b1Element.addEventListener('mouseout',func2,false); 20function func1(){ 21 b1Element.setAttribute("style", "visibility:visible;"); 22} 23function func2(){ 24 b1Element.setAttribute("style", "visibility: hidden;"); 25} 26</script> 27</body> 28</html>

[受信フォルダ] 以外も表示するようにしてみましたが、どうでしょう。
event.target, event.relatedTarget の扱いを覚えるとコードの幅が広がります。
jsfiddleにサンプルコードをUP済。

HTML

1<style> 2table { 3 border-collapse: collapse; 4} 5 6td, th { 7 border: solid 1px black; 8} 9 10.mail-body>[aria-hidden=true] { 11 visibility: hidden; 12} 13</style> 14</head> 15<body> 16<table id="sample"> 17 <thead> 18 <tr> 19 <th>MENU</td> 20 <th class="mail-header">受信フォルダ</td> 21 <th class="mail-header">送信フォルダ</td> 22 <th class="mail-header">削除フォルダ</td> 23 </tr> 24 <thead> 25 <tbody> 26 <tr> 27 <td></td> 28 <td class="mail-body"><span aria-hidden="true">・メール表示<br />・削除</span></td> 29 <td class="mail-body"><span aria-hidden="true">・メール表示<br />・削除</span></td> 30 <td class="mail-body"><span aria-hidden="true">・メール表示<br />・削除</span></td> 31 </tr> 32 <tr> 33 <td colspan="4"></td> 34 </tr> 35 </tbody> 36</table> 37 38<script type="text/javascript"> 39'use strict'; 40(function () { 41 function handleMouseoverout (event) { 42 switch (event.type) { 43 case 'mouseover': 44 var td = event.target, 45 classList = td.classList; 46 47 if (classList.contains('mail-header')) { 48 td.parentNode.parentNode.parentNode.tBodies[0].rows[0].cells[td.cellIndex].firstChild.setAttribute('aria-hidden', 'false'); 49 } else if (classList.contains('mail-body')) { 50 td.firstChild.setAttribute('aria-hidden', 'false'); 51 } 52 break; 53 case 'mouseout': 54 var td = event.target; 55 if (!td.classList.contains('mail-body') || td !== event.relatedTarget.parentNode) { 56 for (var i = 0, span = event.currentTarget.querySelectorAll('[aria-hidden=false]'), l = span.length; i < l; ++i) { 57 span[i].setAttribute('aria-hidden', 'true'); 58 } 59 } 60 break; 61 } 62 } 63 64 function init () { 65 var table = document.getElementById('sample'); 66 67 table.addEventListener('mouseover', handleMouseoverout, false); 68 table.addEventListener('mouseout', handleMouseoverout, false); 69 } 70 71 init(); 72}()); 73</script>

投稿2015/09/28 11:58

編集2017/04/17 00:23
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/10/05 01:37

知らないこともありましたが無事解決しました。 ありがとうございます。
guest

0

イベントを定義しているオブジェクト自体が非表示の場合、イベントが発火しないようなので、

更にタグで囲むのはどうでしょうか?

html

1 <td id="b2"><div id="d2" style="visibility: hidden;">・メール表示<br/>・削除</div></td>

javascript

1var b2Element = document.getElementById('b2'); 2var d2Element = document.getElementById('d2'); 3 4b2Element.addEventListener('mouseover',func3,false); 5b2Element.addEventListener('mouseout',func4,false); 6function func3(){ 7 d2Element.setAttribute("style", "visibility:visible;"); 8} 9function func4(){ 10 d2Element.setAttribute("style", "visibility:hidden;"); 11}

ちなみに、mousemoveイベントだと、マウスが動いている間ずっと発火するので、重くなると思い、
上のコードではmouseoverで書いてます。

投稿2015/09/28 10:57

rk7fd3s

総合スコア61

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問