onclickを使わずにイベント処理をする方法について。
【<h1>をクリックすると同じ<div>を親に持つ<p>が表示/非表示】
されるようにしたいのですが、IEで動作せず、困っています。
下記は現在のコードです。
--------------------------------------------------------------------------
var divs = document.getElementsByTagName('div');
var listener = function(ev){
if(/(?:^|\s)text(?:$|\s)/.test(ev.target.className)){
var next = ev.target.nextSibling.nextSibling;
if(next.style.display != "none"){
next.style.display = "none";
}else{
next.style.removeProperty("display");
}
}
};
if (document.addEventListener) {
document.addEventListener('click', listener, false);// IE以外
} else {
document.attachEvent("onclick", listener);// IE
}
--------------------------------------------------------------------------
<div>
<h1 class="text">見出し</h1>
<p>本文</p>
</div>
<div>
<h1 class="text">見出し</h1>
<p>本文</p>
</div>
<div>
<h1 class="text">見出し</h1>
<p>本文</p>
</div>
--------------------------------------------------------------------------
ev.target.classNameあたりが怪しく…
window.event.srcElement.classNameに変更してみましたが動作しませんでした。
html側の制約があり、出来れば上記のようなclassのみのhtmlで、
更にわがままを言うと
<div class="text">
<h1>見出し</h1>
<p>本文</p>
</div>
のようにdivにclassを振った形で実現したいです。
なお、現在のコードは複数のサンプルコードを参考に試行錯誤したものですので
不要なコードが混ざっているかもしれません。
動作確認環境はIE7、IE8、Firefox、Safari(Windows)です。
納期が迫り大変困っています。アドバイスを頂けますと嬉しいです。
宜しくお願い致します。
No.1
- 回答日時:
var listener = function(ev){
var t = ev./*@if(1)srcElement@else@*/target/*@end@*/;
if (t.tagName === 'H1' && t.parentNode.tagName === 'DIV' && /(?:^|\s)text(?:$|\s)/.test(t.parentNode.className)) {
while (t && t.nodeType !== 1) t = t.nextSibling;
t && (t.style.display = t.style.display === 'none' ? 'block' : 'none');
}
};
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
任意の座標をクリックさせるには
-
DIV内のDIV要素を移動する。
-
指定要素のクリック位置を取得...
-
javascriptでCSVを呼出しvlookup
-
WordPressのコンタクトフォーム...
-
画像上のクリックした場所が分...
-
GreaseMonkeyについて
-
関数でy=g(x)のgとは何の略です...
-
C#テキストボックスの文字を配...
-
google apps scriptの終了のさせ方
-
要素名がスペースを含む場合のj...
-
javascriptでのURLの引数
-
jqGridについて
-
javascriptでiframeのURL変更は?
-
VBAのIE操作でframe構造のサイ...
-
TexでΣの添え字の位置直し
-
GASでundefinedエラーが出ます
-
javascriptエラーの解決策について
-
今年を取得する方法はありますか?
-
jQueryの"return false"の役割...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
任意の座標をクリックさせるには
-
javascript 特定のタグのidの存...
-
onchangeイベントを使ってspan...
-
HTML:Tableタグに対し、JavaScr...
-
モーダルダイアログウィンドウ...
-
日本語入力の禁止
-
javascriptでCSVを呼出しvlookup
-
Click回数を数え、規定された回...
-
画像上のクリックした場所が分...
-
配列の大括弧と丸括弧はどう違う?
-
【Tabキー】特定の範囲内だけで...
-
重複しないくじの作り方がわか...
-
javascriptで、表示されている...
-
div要素内の全input要素をdisable
-
javascriptであるボタンを押す...
-
javascriptで自動計算フォーム...
-
RadioButtonListの表示制御
おすすめ情報