質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

200閲覧

indexOfでの要素の表示切替について

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/09/07 04:28

編集2020/09/07 23:26

運用しているECサイトに実装したいのですが、
indexOf にて文字列を判別し、HTMLの表示・非表示を切り替えたいと思っています。

該当のソースコード

【HTML】

<span class="login-tag">_MEMBER_</span> <ul> <li class="login"><a href="###">ログイン</a></li> <li class="member"><a href="###">マイページ</a></li> </ul>

MEMBER 部分は別のJSにより(.innerHTML)
非会員であれば「0」、会員であれば「1」に変換されます。

【JS】

$(function() { $('.login-tag').each(function() { var logintag = $(this); if (logintag.text().indexOf('1') >= 0) { logintag.next('ul').children('.login').hide(); logintag.next('ul').children('.member').show(); } else { logintag.next('ul').children('.login').show(); logintag.next('ul').children('.member').hide(); } }); });

別JSにより変換される文字列を利用して、
非会員 ⇒ .login を表示
会員 ⇒ .member を表示
といった形で切替を行いたいです。

発生している問題

別JSにより変換される前の文字列「MEMBER」での判定になってしまっているためだと思うのですが
正しく表示が切り替わりません。
(常に .login の方だけが表示される状態)

補足情報

別JSは私が管理できないサーバー上にあるファイルのため、編集が出来ません。
(会員ランク、保有ポイント数などをサイト上に表示させるためにECサイト側が用意しているJSでして、
読み込ませること自体はマニュアルにも記載のあるものなので問題はありません)

↓以下、マニュアルの一部キャプチャ添付いたします。
イメージ説明

やりたいこと

置換される前の「MEMBER」ではなく .innerHTML により変換された後の文字列で判別したいのですが、
難しいでしょうか。
JS初心者のため、解決策があればぜひお伺いしたいです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/07 04:30

そもそも全てHTMLに持ったうえでのJavaScriptだと「会員」「非会員」の切り替えは意味を成さないのでは。 >別JSは私が管理できないサーバー上にあるファイルのため それと「自身が作ったjsはリンクできる」が繋がらないのですが、、、 どういう状況なのでしょうか。
退会済みユーザー

退会済みユーザー

2020/09/07 04:49

コメントありがとうございます。 的外れな回答でしたら申し訳ございません…(>_<) やりたい事は単純に、 会員には、マイページTOPのURL+「マイページ」というリンク文言のみを、 非会員には、ログイン画面のURL+「ログイン」というリンク文言のみを表示させたいと思っております。 ログインしているかどうかの判別を行うために ECサイト側で用意された特殊タグ「_MEMBER_」を利用しております。 また、別JSはECサイト側で用意しているものでして、 ECサイト側が管理しているサーバー上にあるJSファイルになります。 私の方で管理しているサーバー上に外部リンクとして読み込ませた上で、指定の特殊タグを入れる事で文字列が変換されます。
m.ts10806

2020/09/07 04:55

>ECサイト側が管理しているサーバー上にあるJSファイル を勝手に読み込んでいいものかどうか、質問内容だけでは判断できませんでした。
退会済みユーザー

退会済みユーザー

2020/09/07 04:59

そうですよね、分かりにくく申し訳ありません… 今回のような会員フラグだけでなく、会員ランク、保有ポイント数などをサイト上に表示させるためにECサイト側が用意しているJSでして、読み込ませること自体はマニュアルにも記載のあるものなので問題はありません。
m.ts10806

2020/09/07 05:06

補足点として質問本文に追記してください。 できればそのマニュアルとやらが分かる情報(URL)も
guest

回答1

0

jsで処理することではなくセッション情報でサーバーから表示する
HTML要素を切り替えるべきでは?

投稿2020/09/07 04:44

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/09/07 04:56

コメントありがとうございます。 セッション情報で切り替える…そうですね… 方法が思い浮かばないのですが、ログインしているかどうかを判別して表示を切り替えるという事なので、仰る通りですね(>_<) 勉強不足なので調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問