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

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

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

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

Q&A

解決済

2回答

1127閲覧

javascriptの「getElementsByTagName」を使い、Aタグのホバー時に発火させるアクションを作る

ninjanin

総合スコア26

JavaScript

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

0グッド

0クリップ

投稿2018/12/20 12:03

Aタグにホバーしたらアラートを出したいのですが、どのように書けばうまくいくでしょうか?初心者ですみませんが、宜しくお願いします。

html

1<a href="#">アラートする</a> 2<button>アラートしない</button> 3<span>アラートしない</span>

javascript

1var target = document.getElementsByTagName("A"); 2target.addEventListener('mouseenter', () => { 3alert('ホバーしました'); 4}, false);

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

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

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

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

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

guest

回答2

0

ベストアンサー

手っ取り早いのはdocumentに処理を入れて継承すること

javascript

1<script> 2document.addEventListener('mouseenter', (e) => { 3 if(e.target.nodeName=="A") alert('ホバーしました'); 4},true); 5</script> 6<a href="#">アラートする</a> 7<button>アラートしない</button> 8<span>アラートしない</span>

要素にイベントをつけるならループ処理が必要

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 [].forEach.call(document.querySelectorAll('a'),(x)=>{ 4 x.addEventListener('mouseenter',()=>{ 5 alert('ホバーしました2'); 6 }); 7 }); 8}); 9</script> 10<a href="#">アラートする</a> 11<button>アラートしない</button> 12<span>アラートしない</span>

投稿2018/12/20 12:12

yambejp

総合スコア114769

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

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

ninjanin

2018/12/20 12:19

2つめのループ処理の方はできませんでしたが、難解なのでこちらは置いておきまして、、(すみません) 1つめの方についてお聞きしたいのですが、Aが複数あるとき、連続でホバーしてもアラートの処理はその都度実行されますか?アラートが1回出たらおしまいなように見えてしまうのですが、実際は裏でちゃんとその都度発火しているのでしょうか?
yambejp

2018/12/20 12:24

アラートが表示されている最中に別のアンカーにmouseenterしてアラートが 追加で表示されるかという質問ですか? もしそうならアラートはwindowから処理を取り上げてしまうので、 アラート中は何をやっても無駄です。 OKで閉じたあと別のアンカーにhoverすれば再度alertが表示されるのはわかると思います 検証するならalertはやめて、console.logなど開発ツールを使うべきです
ninjanin

2018/12/20 12:37

アラートはそうなんですね。ありがとうございます。CSSを変えても1回目以降わからないし、どうすればいいか悩んでましたが、コンソールに出せば何回目でも出ますね。ありがとうございます。 でも、次のように変えても、1回目でもコンソールに何もでないのすが、、すみません。 document.addEventListener('mouseenter', (e) => { if(e.target.nodeName=="A") console.log('ホバーしました'); },true);
yambejp

2018/12/20 12:41

おかしいですね。私の環境では普通に表示されますよ ブラウザの種類とバージョン、OSはなんでしょう?
ninjanin

2018/12/20 12:43

すみません!検索バーに変なのが入ってたせいでした…。申し訳ございません。できました。ありがとうございます。
guest

0

こんなのは如何でしょうか

var elements = document.getElementsByTagName("A"); for(var i=0; i<elements.length; i++){ elements[i].addEventListener('mouseover', function(){ alert('ホバーしました'); }, false ); }

投稿2018/12/20 12:20

worldtravel

総合スコア23

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

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

ninjanin

2018/12/20 12:44

数を書いてあげることで処理できるのですか。覚えておきます。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問