プロが教える店舗&オフィスのセキュリティ対策術

現在のページの URL パス名に「/campaign_page/seminar/」または「/forms/」が含まれている場合、そのページ内のすべてのクラスが「.bottom_btn'」という要素に対して非表示にする、というコードを教えていただいたのですが正しく動作せずに困っています。
(回答期限が切れてしまい質問ができなくなってしまったため、再掲載するかたちで投稿しています)

実際に記述したコード
if( /\/(campaign_page\/seminar|forms)\//.test(location.pathname))
document.querySelectorAll('.bottom_btn').forEach( e => {
e.style.display = 'none';
});

デベロッパーツールのconsoleで確認したところ、
Uncaught SyntaxError: Invalid or unexpected tokenというエラーが表示されており、下記の記述に誤りがあるような指摘が返ってきました。

/\/(campaign_page\/seminar|forms)\//.test(location.pathname)

どこか間違っている部分があるのでしょうか?
また.testという部分はlocation.pathnameで取得した値を格納する変数という理解であってますでしょうか。

A 回答 (1件)

ご提示の内容では特に誤りは無いので、行の前後を含めて確認しましょう。


怪しいのは、文末セミコロン漏れ、引用符や括弧の開閉対応不備、全角空白などです。

ブラウザの開発者ツールのコンソールが使えるならば、
計算式が正しいかどうかを実行しながら検証しましょう。

例) コンソールに計算式を打ち込み検証する操作例
> /\/(campaign_page\/seminar|forms)\//.test("/aaa/forms/")
← true
> /\/(campaign_page\/seminar|forms)\//.test("forms")
← false

関数の意味を知りたいなら説明書を読みましょう。
https://developer.mozilla.org/ja/docs/Web/JavaSc …

余談ではありますが、

/\/(campaign_page\/seminar|forms)\//
の正規表現は、どうにも不安が募ります。
new RegExp("/campaign_page/seminar/|/forms/")
の様にエスケープや括弧を多用せずに読みやすくしては如何でしょうか。
特に初心者の場合は、読みづらい正規表現がバグの温床になりがちです。
    • good
    • 0
この回答へのお礼

ご提案いただいた下記コードに書き換えてみたところ、思い通りに動作しました。ご丁寧にご説明いただきありがとうございました。
new RegExp("/campaign_page/seminar/|/forms/")

お礼日時:2023/05/10 17:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!