
Javascriptで、ページ内に点在する任意のクラスを非表示にしたいと思います。
こんなことが可能でしょうか?
条件:
1.class="text"というspanなりdivなりがページ内に複数存在します。指定しているスタイルはフォントサイズやフォントカラーです。
2.そのクラスが指定された要素の中で、テキストで「非表示」となっている要素のみ非表示にしたいと思います。
例:<span class="text">非表示にしたい</span>、<div class="text">これは非表示です</div>
このように「非表示」という文字が含まれています。
3.「非表示」というテキストが含まれている要素にはclass="text"以外にclassもidもふられていないです。
4.jQueryやJavascriptは使えますが、あらかじめ指定要素にidやclassを付加しておくということができません。何らかの方法でページ読み込み後に検索し、探し出さないといけないのです。
案:
素人の私が考えた方法では、「非表示」という文字がマッチする「class="text"」要素を何らかの方法で検索し、その要素に対して「id="hide"」などを追加して、そのidを非表示処理するという方法です。
上記案をコード化できますか?
また、ほかにもっと簡潔にできるよという方法はありますか?
かなりの無理難題のような気がしますが、もしできるようであればよろしくお願いします。
No.1ベストアンサー
- 回答日時:
>そのクラスが指定された要素の中で~~
が、どこまでの範囲を指しているのかわかりませんがご参考までのネタとして。
(あとは適当に作り直してください。インデントは全角空白になっています)
(function(){
var f = window.onload;
window.onload = function(){
if(f) f();
var i, e, t, n, elms = document.body.getElementsByTagName("*");
for(i=0; e=elms[i++];){
if((n=e.className) && n.match(/\btext\b/))
if((((t=e.textContent) || t!==undefined)?t:e.innerText).indexOf("非表示")>-1)
e.style.display = "none";
}
}
})();
* これ(↑)だと
<a href="~" class="text">非<span>表示</span>~~
なんてのは対象になるけれど
<a href="~" class="text">非
<span>表示</span>~~
だと対象にならないとかになるけれど、どんなのが良いのかわからないので意図に応じてご修正を。
(多分、jQueryで書けばもっと簡略になることでしょう)
No.3
- 回答日時:
ふぁいあ~ほっくすなら、うごくよ。
<!DOCTYPE html>
<title></title>
<style type="text/css">
*[aria-hidden="true"] { display: none; }
.hide {
display : none;
}
</style>
<p class="text">非表示1</p>
<p class="text">表示2</p>
<p class="text">非表示3</p>
<script type="application/javascript; version=1.8">
var hoge0 =
(function (isInsideText)
(function (target, text, addClass)
Array.forEach (document.getElementsByClassName (target), function (e)
(isInsideText.call(e.textContent, text))
? e.setAttribute('aria-hidden', 'true')
: null)))
(function (text) -1 < this.indexOf (text));
hoge0 ('text', '非表示');
var hoge1 =
(function (isInsideText)
(function (target, text, addClass)
Array.forEach (document.getElementsByClassName (target), function (e)
(isInsideText.call(e.textContent, text))
? e.classList.add (addClass)
: null)))
(function (text) -1 < this.indexOf (text));
//hoge1 ('text', '非表示', 'hide');
var hoge2 =
(function (target, reg, addClass)
Array.forEach (target,
(function (e)
(reg.test (e.textContent))
? e.classList.add (addClass)
: null)));
//hoge2 (document.getElementsByClassName ('text'), /非表示/, 'hide');
</script>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ActiveXobjectが作成できない
-
配列の大括弧と丸括弧はどう違う?
-
RadioButtonListの表示制御
-
javascriptで、表示されている...
-
同じIDで定義した要素の配列を...
-
google apps scriptの終了のさせ方
-
ボタンをクリックすると数が増...
-
雪を降らせるみたいな、ゆらゆ...
-
ASP.NET MVCでObjectをjsに渡す
-
ラジオボタンでreadonlyの切替え
-
C#OpenCv V4にのエラーに関する...
-
var_dumpのdump意味はを知りた...
-
Latexに関する質問です。
-
javascriptの基本的なことだと...
-
同じ型【ハイフンと数字】だけ...
-
イベントが初めの一回しか起き...
-
SubWindowを閉じる時に処理する...
-
クリックすると上に開くアコー...
-
XMLHttpRequestでキャッシュを...
-
javascriptで2つのArrayの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ActiveXobjectが作成できない
-
<a>タグのテキストを取得
-
onchangeイベントを使ってspan...
-
javascriptで編集可能不可能の...
-
innerHTML実行後のイベント
-
javascriptの質問です
-
クリックでURLに飛ばすときに、...
-
ボタン上でマウスを押している...
-
別フレームのタグ属性を取得す...
-
DIV内のDIV要素を移動する。
-
HTML:Tableタグに対し、JavaScr...
-
任意の座標をクリックさせるには
-
お気に入り用のボタンを配置し...
-
1つの処理で複数表示させたい
-
WordPressのコンタクトフォーム...
-
指定した数値同士を合計計算し...
-
JavaScriptで文字列の置き換え
-
フォーカスを合わせる
-
div要素内の全input要素をdisable
-
[javascript]DOCTYPE宣言対応に...
おすすめ情報