
過去にも似たような質問を投稿したのですが、また行き詰ってしまったため教えてください。
URLのなかに/bbb/または/cccc/という文字列が一致したときに、そのページ内の.bottom_btn, .fixed_btnのクラスが付与されている要素に対して非表示にする、というコードが以下の記述になるのですが、この条件にトップページも加えたいのですが上手くいかず困ってます。
やりたいこととしては、トップ(/)も/bbb/も/cccc/も.bottom_btn, .fixed_btnのクラスが付与されている要素は非表示にしたいです。
▼変更前
if (new RegExp("/bbb/|/cccc/").test(location.pathname)) {
document.querySelectorAll(".bottom_btn, .fixed_btn").forEach(e => {
e.style.display = "none";
});
}
以下が変更後のコードになります。どこが間違っているのかご指摘いただけないでしょうか。
▼変更後
if (new RegExp("/|/bbb/|/cccc/").test(location.pathname)) {
document.querySelectorAll(".bottom_btn, .fixed_btn").forEach(e => {
e.style.display = "none";
});
}
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは
横からですが・・・
チェックしたい「トップ」というのが、例えば
https://hogehoge.com/
のようなURLであるなら、No1様の回答の通りでできるはずです。
この場合であれば、location.pathname は「/」となるはずですので。
もしも、チェックなさりたい「トップ」というのが、
https://hogehoge.com/fuga/
のような場合だと、「/」のみにはならないので、
> うまくいきません
となりますけれど・・・
「できた/できない」という2値情報だけでは何も進展しません。
何をチェックしたいのかをきちんと明示すれば、適切な回答を得られると思いますよ。
何から質問してよいのやらで説明不足ですみません。
ご指摘いただいたトップとは、https://hogehoge.com/ という意味でした。以下のコードでうまくいきました。
if (
new RegExp("/bbb/|/ccc/").test(location.pathname) ||
location.pathname === "/"
) {
document.querySelectorAll(".bottom_btn, .fixed_ban").forEach(e => {
e.style.display = "none";
});
}
No.2
- 回答日時:
> うまくいきません
原因追究しましょう
例)
URL内の判定部分 = location.pathname;
判定した結果 = 正規表現.test(URL内の判定部分);
console.debug("特定URLか判定", URL内の判定部分, 判定した結果);
ご丁寧にご説明いただきありがとうございます。
以下のコードでうまくいきました。
if (
new RegExp("/bbb/|/ccc/").test(location.pathname) ||
location.pathname === "/"
) {
document.querySelectorAll(".bottom_btn, .fixed_ban").forEach(e => {
e.style.display = "none";
});
}
No.1
- 回答日時:
条件を整理しましょう
URL のパス部分の何処かに "/bbb/" が含まれている
または
URL のパス部分の何処かに "/ccc/" が含まれている
または
URL のパス部分が "/" である
条件を単純に実装すると
path = location.pathname
path.includes("/bbb/") || path.includes("/ccc/") || path == "/"
条件に一致する正規表現ならば
^(.*/bbb/.*|.*/ccc/.*|/)$
ご回答ありがとうございます。
教えていただいた正規表現を入れて試してみたのですが、うまくいきませんんでした。書き方が間違っているのでしょうか。
if (new RegExp("^(.*/bbb/.*|.*/ccc/.*|/)$").test(location.pathname)) {
document.querySelectorAll(".bottom_btn, .fixed_btn").forEach(e => {
e.style.display = "none";
});
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EclipseでJSPのコンパイルエラー
-
そんなにお金がなくても年に1度...
-
dllと同じプロジェクトにする方法
-
ネスカフェ エクセラ と UCCク...
-
main()を持つクラスが2つ以上...
-
共通で使う関数を集めたクラス...
-
どこからも呼ばれていない無意...
-
標準モジュールとクラスモジュ...
-
体育祭クラス全員参加のムカデ...
-
VBAもしくはVB6:クラスの中で...
-
Sub-LVDS規格とは
-
成人式の後中3のクラスで集まろ...
-
グローバルIPとプライベートIP...
-
ドキュメントクラスの取得方法
-
ラッパクラスの作成について
-
java eclipse 型に解決できません
-
フレームとウィンドウの違いに...
-
恋愛
-
構造体とクラスの違い
-
同一パッケージにあるクラスが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
僕の出身中学校は200人同級生が...
-
今日は こどもの日 で、良い天...
-
どこからも呼ばれていない無意...
-
そんなにお金がなくても年に1度...
-
中学生です。 私は教室の黒板に...
-
恋愛
-
EclipseでJSPのコンパイルエラー
-
java eclipse 型に解決できません
-
共通で使う関数を集めたクラス...
-
main()を持つクラスが2つ以上...
-
同一パッケージにあるクラスが...
-
配列の重複する値とその個数を...
-
「隣の芝生は青く見える」現象...
-
重複エラーを解決するには
-
UMLのクラス図はmain()も含むん...
-
複数のクラスで共通した関数を...
-
VBAもしくはVB6:クラスの中で...
-
命名規約は連番でいいのか?
-
eclipse でクラスに色
-
3年間同じクラスになる確率
おすすめ情報