HTMLページ内のタグに対してのイベント
getElementsByTagNameで指定したタグの部分(画像やリンク)をクリックすると関数を呼び出すという動作をやりたいのですが、どうも上手くいきません。
試しに下記のようなプログラムを作ってみたのですが、ページを表示した後すぐにalert関数が呼び出されてしまいます。
あるタグの部分を押したときに関数を呼び出すというやり方を知っている方がおられましたら、ご教授願います。
ひとつひとつにIDを割り当てるというやり方でなくて、タグ別にイベントを判定するやり方を考えています。
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type="text/javascript">
window.onload = function ini(){
document.getElementsByTagName("img").onClick = alert("これは画像です");
}
</script>
</head>
<body>
<img src="..." />
<img src="..." />
<img src="..." />
<img src="..." />
</body>
</html>
No.3
- 回答日時:
>ひとつひとつにIDを割り当てるというやり方でなくて、~~
element.onclick = ~~の方法だと、一つ一つにイベントを割り当てていく方法になります。
(例示の場合、getElementsByTagNameは配列になるので、直接onclickではうまくいかない)
どうせならまとめてひとつのイベントをドキュメントに設定しておけば、代用できると思いますよ。
No1様の方法と同じだけれど、簡略化バージョン。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
<body>
<div>
<img src="a">
<img src="b">
</div>
<div>
<img src="c">
<img src="d">
</div>
<script type="text/javascript">
<!--
document./*@cc_on @if(1) attachEvent('on' + @else @*/ addEventListener(/*@end @*/'click',
function (evt) {
var t = evt.target || evt.srcElement;
alert(t.nodeName + " / " + (t.src || ""));
}, false);
//-->
</script>
</body>
</html>
回答ありがとうございます。
こちらは画像のパスも表示されるのですね。
No.1様のところでも書きましたが、もう少し勉強してから
応用させて頂きたいと思います。
ありがとうございました。
No.2ベストアンサー
- 回答日時:
単純に直すと以下の通り?
window.onload = function(){
var imgs = document.getElementsByTagName("img");
for(var i=0;i<imgs.length;i+=1){
imgs[i].onclick = function(){
alert("これは画像です。");
}
}
}
回答ありがとうございます
まさにこういう書き方を知りたかったんです。
No.3様にご指摘いただいていましたが、
getElementsByTagNameで得られるのは配列だということを
分かっていませんでした。
今回のプログラムはこの書き方でいきたいと思います。
ありがとうございました。
No.1
- 回答日時:
こもじで onclick 。
//@cc_on
var Handler = function (evt) {
var node = evt./*@if (1) srcElement @else@*/ target /*@end@*/;
var doc = node.ownerDocument;
var win = doc./*@if (1) parentWindow @else@*/ defaultView /*@end@*/;
alert(node.nodeName);
alert(node.tagName);
alert(node.id);
}
document./*@if(1)attachEvent('on'+@else@*/addEventListener(/*@end@*/
'click',Handler, false);
回答ありがとうございます。
onclick ですね。気をつけます。
勉強不足でこの書き方をまだ十分に理解できていないのですが、
これはすべてのタグに対してイベントを割り当てているのですね。
もう少し勉強して今作っているものに応用したいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
連番画像「次へ」「前へ」で、...
-
スマートな外部javaでロールオ...
-
オンマウスで画像と文字を同時...
-
JavaScriptを外部ファイルにす...
-
画像の座標位置取得
-
MAX関数を使ってからLEFT JOIN...
-
c++std::string型をTCHARに変換...
-
htmlの記述で link rel=styles...
-
JQueryで画像の上で文字を動かす
-
ロールオーバー効果にならない。
-
jspでcssが読み込めない
-
スライダーを実装した場合、ペ...
-
離れた場所にマウスオーバーで...
-
フォントサイズの変更
-
変数内容をHTML内で表示する方法
-
javascriptでURLにマウスオーバー
-
1行で左寄せと右寄せと中央揃え...
-
document.getElementById( ).st...
-
文字を固定したいのですが…
-
戻ってきた時ツリーメニューが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openで値の渡し方を教え...
-
jQueryでサーバー上のファイル...
-
【jQuery】複数の画像の読み込...
-
複数のバナーをリロードする度...
-
jQueryで画像を重ねる
-
一定時間ごとにgif画像の切...
-
画像をクリックすると別ウイン...
-
JavaScriptで画面サイズによっ...
-
HTMLページ内のタグに対しての...
-
【javascript】ロールオーバー...
-
HPに複数の画像をクリックで切...
-
連続したURLへのwindow.openの...
-
リンク切の場合リンクしない
-
画像と文字を同時に切り替えたい
-
JavaScriptで画像置換えてクリ...
-
画像の入れ替え
-
javascriptによるランダム画像...
-
<img>タグの alt= の値をキャプ...
-
outlook2010の不具合で困ってい...
-
複数のボールの落下、バウンド...
おすすめ情報