HTMLの書き方について質問です。
tableのtdにonclick処理を設定し、
さらに、そのtd内の文字列にもonclick処理を設定したいのですが、
文字列をクリックしたときに、同時にtdに設定したonclick処理も実行されてしまいます。
文字列をクリックしたときは、その文字列に設定してある処理だけ実行するようにはできないのでしょうか?
具体的なサンプルは下記の通りで、
text_funcだけを実行させたいのです。
----------------------
<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
function td_func(){
折りたたまれている文字を表示する処理;
}
function text_func(){
TD(セル?)の背景色を変える処理;
}
//-->
</script>
</head>
<body>
<table border="1">
<tr>
<td style="padding:10px;" onclick="td_func()">
<a href="#" onClick="text_func();return false;">test_td</a>
</td>
</tr>
</table>
</body>
</html>
No.3
- 回答日時:
addEventListener と stopPropagation を使いましょう
https://developer.mozilla.org/ja/docs/Web/API/ev …
例:
addEventListener('load', function(ev){
_ function listener(clickEvent) {
_ _ clickEvent.stopPropagation(); // 上位要素への伝播を止める
_ _ clickEvent.preventDefault(); // ブラウザのデフォルト挙動(ページ遷移)を防ぐ
_ _ 処理(clickEvent.currentTarget);
_ }
_ document.getElementById(対象のリンクID).addEventListener('click', listener, false);
}, false);
古いIEを考慮しなければならない特別な事情があるなら cancelBubble を併用してください
http://msdn.microsoft.com/ja-jp/library/cc409795 …
例:
function text_func(){
_ window.event.cancelBubble = true; // 上位要素への伝播を止める
_ 処理();
}
返事が遅くなり申し訳ありません。
ご回答ありがとうございます。
有益な情報をいただき感謝いたします。
私の記述が悪いためだとは思いますが、なぜかcancelBubble しか効きませんでした。
初心者のため、イベントバブリングを考慮し始めると深みにはまってしまいそうだったので、
チェックボックスのON・OFFで処理を切り替えることにしました。
お手数おかけしましたが、いろいろと勉強になりました。
ありがとうございます。
No.2
- 回答日時:
こんな感じでどうでしょ?
・クリックに反応するTDにfuncTDクラスを設定
・クリックに反応するAにfuncAクラスを設定
<html>
<head>
<script>
try{
document.addEventListener ('click',function(e){clickfunc(e)},true); //基本
}catch(e){
document.attachEvent('onclick',function(e){clickfunc(e)}); //IE
}
function clickfunc(e){
var t = (e.srcElement || e.target);
if(t.nodeName=="A" && t.className.match(/(^| )funcA( |$)/)){
text_func();
if(e.preventDefault)e.preventDefault(); //基本
else e.returnValue = false; //IE
}else if(t.nodeName=="TD" && t.className.match(/(^| )funcTD( |$)/)){
td_func();
}
}
function td_func(){
alert("tdおした");
}
function text_func(){
alert("aおした");
}
</script>
</head>
<body>
<table border="1" >
<tr>
<td class="funcTD">
<a href="#" class="funcA">td:funcあり、a:funcあり</a> 地雷
</td>
<td>
<a href="#" class="funcA">td:funcなし、a:funcあり</a> 安全地帯
</td>
</tr>
<tr>
<td class="funcTD">
<a href="#">td:funcあり、a:funcなし</a> 地雷
</td>
<td>
<a href="#">td:funcなし、a:funcなし</a> 安全地帯
</td>
</tr>
<tr>
<td class="funcTD">
td:funcあり、a:なし 地雷
</td>
<td>
td:funcなし、a:なし 安全地帯
</td>
</tr>
</table>
</body>
</html>
返事が遅くなり申し訳ありません。
ご回答ありがとうございます。
スタイルを変える処理も追加したかったので、
結局、チェックボックスを用意してチェック時にだけ処理を実行するようにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルのヘッダとボディの幅...
-
TRタグの余白をcssで設定するには
-
テーブルの行を折りたたみたい...
-
tableにul,または,olを入れられ...
-
cssで、表示されるテキストによ...
-
htmlのtable内に画像
-
HTMLのテーブルで桁をそろ...
-
文字列が入っているtdを削除せ...
-
テーブルタグのセルの幅の一部...
-
逆L字の表(table)組み
-
ASP GridViewで1レコード2行を...
-
セルをまたがるリンク。
-
HTMLで文とテーブルの間が空く。
-
テーブルの任意の列を非表示に...
-
TABLE内でのwidth指定
-
Safariでテーブルのセルの高さ...
-
ラジオボタンとテキストボック...
-
colspanを使うと正しく表示でき...
-
html・cssで日付をキレイに揃え...
-
テーブルの装飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルの行を折りたたみたい...
-
テーブルの任意の列を非表示に...
-
tableにul,または,olを入れられ...
-
TRタグの余白をcssで設定するには
-
cssで、表示されるテキストによ...
-
HTML <td></td>タグ セル内余...
-
テーブルのヘッダとボディの幅...
-
文字列が入っているtdを削除せ...
-
テーブルのセルに画像をピッタ...
-
テーブルの行の高さを指定する...
-
テーブルの表示がずれます
-
ホームページ 表の上の余白を...
-
テーブルのセルにアンカー
-
テーブルタグのセルの幅の一部...
-
逆L字の表(table)組み
-
中に<table></table>が使えるア...
-
tableでcolspanを使うと次行以...
-
スタイルシートで colspan=3と...
-
TABLE内の枠線を一部消すには
-
テーブルの上に空行が入る・・...
おすすめ情報