• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTML table内文字のonclick抑止)

HTML table内文字のonclick抑止

このQ&Aのポイント
  • HTMLのtable内の文字に設定されたonclick処理を抑止する方法について教えてください。
  • tableのtdに設定したonclick処理と文字列に設定したonclick処理を分けて実行する方法はありますか?
  • 具体的なサンプルコードを使って、text_funcだけを実行する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

直接回答ではありませんが JavaScript イベントバブリング あたりの検索ワードが役に立つと思います。

ferc
質問者

お礼

早々のご回答ありがとうございます。 お教えいただいた内容で調べてみます。

ferc
質問者

補足

返信が遅くなりまことに申し訳ありません。 お教えいただいた単語からいろいろと調べることができました。 全く知識がない単語だっただけにとても助かり、勉強になりました。 ありがとうございました。

その他の回答 (2)

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.3

addEventListener と stopPropagation を使いましょう https://developer.mozilla.org/ja/docs/Web/API/event.stopPropagation 例: 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.aspx 例: function text_func(){ _ window.event.cancelBubble = true; // 上位要素への伝播を止める _ 処理(); }

ferc
質問者

お礼

返事が遅くなり申し訳ありません。 ご回答ありがとうございます。 有益な情報をいただき感謝いたします。 私の記述が悪いためだとは思いますが、なぜかcancelBubble しか効きませんでした。 初心者のため、イベントバブリングを考慮し始めると深みにはまってしまいそうだったので、 チェックボックスのON・OFFで処理を切り替えることにしました。 お手数おかけしましたが、いろいろと勉強になりました。 ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答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>

ferc
質問者

お礼

返事が遅くなり申し訳ありません。 ご回答ありがとうございます。 スタイルを変える処理も追加したかったので、 結局、チェックボックスを用意してチェック時にだけ処理を実行するようにしました。

関連するQ&A

専門家に質問してみよう