イベントが発生したオブジェクト(タグ)により動作を変える

説明

イベントが発生した場所に応じて処理を変えるには、どのタグ上でイベントが発生したかを求めます。これはInternet Explorerと他のブラウザで取得方法が異なっています。Internet ExplorerではeventオブジェクトのsrcElementプロパティにイベントが発生した場所のタグ情報が格納されます。FirefoxやSafari、Operaなどではイベントオブジェクトのtargetプロパティにイベントが発生した場所のタグ情報が格納されます。
 タグ名はtagNameプロパティで取得することができます。サンプルではswitch...caseで取得したタグ名ごとに処理を分けて異なるテキストをページ上に表示しています。
JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>イベントが発生したオブジェクト(タグ)により動作を変える</h1>
<form action="./event.cgi" method="get" name="mainForm">
<input type="button" id="checkButton" value="クリックしてください"><br>
</form>
<div id="result">結果:</div>
</body>
</html>

window.onload = function(){
window.document.onclick = function(evt){
if (!evt) {
var eType = event.srcElement.tagName;
}else{
var eType = evt.target.tagName;
}
eType = eType.toLowerCase();
var text = "";
switch(eType) {
case "h1" : text = "見出しをクリック";
break;
case "input" : text = "ボタンをクリック";
break;
case "form" : text = "フォームをクリック";
break;
}
document.getElementById("result").innerHTML = text;
}
}