\r\n\r\n\r\n\r\n
\r\na\r\n
\r\n
\r\nb\r\n
\r\n\r\n```\r\n挙動が想定と違うようでしたら指摘ください","dateModified":"2021-11-17T02:45:51.454Z","datePublished":"2021-11-17T01:07:32.041Z","upvoteCount":1,"url":"https://teratail.com/questions/369643#reply-501566"},"suggestedAnswer":[{"@type":"Answer","text":"方法自体はいくらでもありそうです。\r\nただ、PHPなりPerlなりのサーバサイドの言語は使わないようなので、ちょっと制限がつきそうですね。\r\njQueryはざっと調べた感じ、JavaScriptを簡略化するだけのクライアントサイドっぽいので。\r\n\r\n単純に毎回違うものにするのは、ぱっと思いつくものだと、\r\n\r\n```ここに言語を入力\r\n方法1:\r\nindex.html, a.html, b.html を用意し、index.htmlにアクセスさせる。そしてそのindex.htmlを介してa,bにアクセスさせる\r\n```\r\n\r\nですかね。\r\n\r\nデザインA,Bをそれぞれa.html, b.html のように用意する。\r\nそして直接a.htmlとかにアクセスさせるのではなく、ユーザとA,Bの間にindex.htmlのようなものを設ける。\r\nファイル名はなんでもいいですが。\r\n\r\nで、index.htmlでは、\r\n\r\n```\r\n1. 表示したいページを決定する\r\n2. location.hrefに相当するやつで動的に移動する \r\n```\r\n\r\n的なロジックでできそうです。\r\n\r\nえーっと、ほら、『ページが存在しません。30秒後にメインページに移動します』的なメッセージが表示されて指定の時間後に別のページに飛ぶアレです。\r\nあれを、『○秒後』とは言わずにすぐに飛ぶ感じですね。\r\n\r\nで、どのようにA,Bのどれかを決めるのかというのは、『前回表示したページ』を考えるとわかりますよね。\r\n\r\n前回がAならB, BならAという風に。\r\n\r\nではこの『前回表示したページ』はどのようにわかるでしょうか。\r\n\r\n現実世界で考えてみてください。\r\n\r\n日ごとに、A,Bを交互に黒板に書くとします。\r\n\r\n私なら、ノートかなんかに『今日黒板に書いたもの: B』的な感じで記録します。\r\nそして翌日、その記録を見て、Bと書かれていたら次はAですよね。\r\nなのでAと書く。そんでもって、ノートかなんかに『今日黒板に書いたもの: A』的なやつで更新する。\r\nさらに翌日も…のように、『記録を残しておく』ですね。\r\n\r\nこれをやればいいだけです。\r\n\r\nJavaScriptとかだと変数がありますが、これはそのページを更新したり、別のページに行ったりすると破棄されます。\r\nなので今回は使えません。\r\n\r\nPHPなりのバッグエンド系の言語が使えるならDBに突っ込んでおいてそれを使うという手が取れますが、今回はできません。\r\n\r\nなので『クッキー』を使います。\r\n\r\nクッキーとはなにか、使い方は?というのはご自分で調べてください。\r\n\r\nそのクッキーを使えば、30日なら30日は保存がきくようです。\r\n\r\nよって、\r\n\r\n```\r\n1. クッキーで『前回表示したページ』を参照する\r\n2. (1)で取得したデータをもとに次に表示するページを決める\r\n3. 『前回表示したページ』を今回表示するページに更新する\r\n4. 表示すると\r\n```\r\n\r\n的な感じになるかと。( (3),(4)は逆になるかもしれないが )\r\n\r\nただ、この方法だと制限がつくかもしれません。\r\n\r\nざっと考えただけでも、\r\n\r\n■ 別のWebブラウザでアクセスされた場合、どうするか\r\n■ 別のPCでアクセスされた場合、どうするか\r\n■ クッキーが破棄された場合、どうするか\r\n■ クッキーの保存期間を過ぎていたら、どうするか\r\n\r\nといった問題がありますね。\r\n\r\n単純に『他の商品も見せたい』的な感じで、『ランダムに表示する』のなら問題はなさそうですが、\r\n常に交互となると、上記のような場合はどうなるでしょうか。\r\n\r\nユーザは常に一つのPCだけでアクセスしているとは限りません。\r\nネットカフェを点々としている人や、\r\nたまたまパソコンやケータイを買い替えたという人もいるはずです。\r\n\r\nそれに、やろうと思えばWebブラウザ側でクッキーの抹消だったかなぁ。\r\n名前は覚えていませんが、破棄することも可能です。\r\n\r\nあるいは、単純に一年後とかにアクセスするかもしれません。\r\n\r\nそれらの場合でも常に交互に…となるとちょっと厳しいかも。\r\nやるならPythonなりPHPなりのサーバサイドに頼らないといけないはずです。\r\n\r\nJavaScriptでもNode.isってのを使えばできる…かもしれませんが。\r\n(試していないのでわかりませんが)","dateModified":"2021-11-17T03:07:06.600Z","datePublished":"2021-11-17T02:50:49.955Z","upvoteCount":1,"url":"https://teratail.com/questions/369643#reply-501582","comment":[{"@type":"Comment","text":"丁寧に詳しくご回答いただきありがとうござます。\r\ncookieプラグイン使用するのを教えていただき無事に反映することができました。\r\nタグにjqueryと書きましたがまだまだ勉強不足でした。。","datePublished":"2021-11-18T07:37:20.335Z","dateModified":"2021-11-18T07:37:20.335Z"}]},{"@type":"Answer","text":"質問タグの範囲ですと、「body要素 にクラスをつけてデザインをコントロールし、Cookie にクラスの状態を保存して JavaScript で Cookie を参照し変更をする」というのがいいように思います。\r\n\r\nググった感じ、参考になりそうなのはこの辺りのページでしょうか。\r\n\r\n[javascript - Set body class with jquery cookie plugin - Stack Overflow](https://stackoverflow.com/questions/15066265/set-body-class-with-jquery-cookie-plugin/15067060)\r\n\r\n[JavaScript - jQueryでCSSを切り替えると、画面を更新する毎に画面が点滅してしまう件について。|teratail](https://teratail.com/questions/161723)","dateModified":"2021-11-17T01:02:25.930Z","datePublished":"2021-11-17T01:02:25.930Z","upvoteCount":1,"url":"https://teratail.com/questions/369643#reply-501565","comment":[{"@type":"Comment","text":"質問に対するコメントをありがとうございます。\r\nbody要素にクラス付けるというのが何やら使えそうで、リンク貼っていただいたページ参考にしたいと思います。\r\nこのような試したことも記入できないような質問に答えていただき本当にありがとうございます。","datePublished":"2021-11-17T02:09:22.071Z","dateModified":"2021-11-17T02:09:22.071Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/jQuery","name":"jQueryに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/369643","name":"アクセス毎に表示するページの内容を交互に変えたい。"}}]}}}
質問するログイン新規登録

Q&A

解決済

3回答

1031閲覧

アクセス毎に表示するページの内容を交互に変えたい。

nonnnonn

総合スコア1

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/11/16 12:12

0

0

グッズ関連のページを作ってます。
アクセス毎や再読み込み時にデザインが異なるページを交互に表示したいのですが、
いろいろ調べても画像をランダムに変ええるくらいしか出てこず、どうしたらよいのかわからず質問してみました。
試したことを書きたいのですが、試せるのすら分からず解決口見えてこず質問させていただきました。

1つのhtmlに2種書いて、読み込み毎に交互に1つを表示1つを非表示にするとかの方がよいのでしょうか。
このページ見たらいいよとかありましたら教えてください。
こんな質問で申し訳ないです。

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

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

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

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

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

BeatStar

2021/11/16 12:50

色々、条件によって違うかと思います。 まず一つ目。HTMLだけでやりたいのでしょうか。それともPHPなりのサーバサイドの言語で処理してもいいのでしょうか。 二つ目。アクセス毎/再読み込み時の場合、ブラウザレベルでのアクセス毎なのでしょうか。それともIPレベル? それとも単純に毎回違うようにしたいだけ? 三つ目。「異なるページを交互に表示」とはどういうことでしょうか。 デザインA,Bがあったとき、A -> B -> A -> B ... のように常に交互になるべきなのか、 単純にランダムに出すだけなのか。( B -> A -> B -> A ... でもいいですが ) 四つ目。デザインの差異はどのぐらいなのでしょうか。単にCSSを差し替えるだけなのか、 Aでは1カラム、Bでは3カラム...とかのように構造自体ががらりと変わるタイプなのでしょうか。 (それともページが違うってことでしょうか?) 私がぱっと思いつくだけでもこれだけ「わからない(条件)」がありますね。 そういうものによって違うかと。
m.ts10806

2021/11/16 21:11 編集

画像ができるならその範囲をページに広げるだけなのでは。 画像だってHTML内の1要素に過ぎません。 (コピペで使えるものを探す限り何もできないと思います)
nonnnonn

2021/11/17 01:59

質問へのご連絡をありがとうございます。 1.こちらはhtml、css、jquery使用して制作したいです。PHP理解できなく。。 2.単純に毎回違うようにしたいです。 3. 交互に表示とは、デザインA,Bがあったとき、A -> B -> A -> B です。 4.差異はトップ画像の変更と見出し画像、色見の変更です。 全部を画像にしたくないのです。。 糸口がつかめなく。。本当にこんな質問に答えていただきありがとうございます。
guest

回答3

0

方法自体はいくらでもありそうです。
ただ、PHPなりPerlなりのサーバサイドの言語は使わないようなので、ちょっと制限がつきそうですね。
jQueryはざっと調べた感じ、JavaScriptを簡略化するだけのクライアントサイドっぽいので。

単純に毎回違うものにするのは、ぱっと思いつくものだと、

方法1: index.html, a.html, b.html を用意し、index.htmlにアクセスさせる。そしてそのindex.htmlを介してa,bにアクセスさせる

ですかね。

デザインA,Bをそれぞれa.html, b.html のように用意する。
そして直接a.htmlとかにアクセスさせるのではなく、ユーザとA,Bの間にindex.htmlのようなものを設ける。
ファイル名はなんでもいいですが。

で、index.htmlでは、

1. 表示したいページを決定する 2. location.hrefに相当するやつで動的に移動する

的なロジックでできそうです。

えーっと、ほら、『ページが存在しません。30秒後にメインページに移動します』的なメッセージが表示されて指定の時間後に別のページに飛ぶアレです。
あれを、『○秒後』とは言わずにすぐに飛ぶ感じですね。

で、どのようにA,Bのどれかを決めるのかというのは、『前回表示したページ』を考えるとわかりますよね。

前回がAならB, BならAという風に。

ではこの『前回表示したページ』はどのようにわかるでしょうか。

現実世界で考えてみてください。

日ごとに、A,Bを交互に黒板に書くとします。

私なら、ノートかなんかに『今日黒板に書いたもの: B』的な感じで記録します。
そして翌日、その記録を見て、Bと書かれていたら次はAですよね。
なのでAと書く。そんでもって、ノートかなんかに『今日黒板に書いたもの: A』的なやつで更新する。
さらに翌日も…のように、『記録を残しておく』ですね。

これをやればいいだけです。

JavaScriptとかだと変数がありますが、これはそのページを更新したり、別のページに行ったりすると破棄されます。
なので今回は使えません。

PHPなりのバッグエンド系の言語が使えるならDBに突っ込んでおいてそれを使うという手が取れますが、今回はできません。

なので『クッキー』を使います。

クッキーとはなにか、使い方は?というのはご自分で調べてください。

そのクッキーを使えば、30日なら30日は保存がきくようです。

よって、

1. クッキーで『前回表示したページ』を参照する 2. (1)で取得したデータをもとに次に表示するページを決める 3. 『前回表示したページ』を今回表示するページに更新する 4. 表示すると

的な感じになるかと。( (3),(4)は逆になるかもしれないが )

ただ、この方法だと制限がつくかもしれません。

ざっと考えただけでも、

■ 別のWebブラウザでアクセスされた場合、どうするか
■ 別のPCでアクセスされた場合、どうするか
■ クッキーが破棄された場合、どうするか
■ クッキーの保存期間を過ぎていたら、どうするか

といった問題がありますね。

単純に『他の商品も見せたい』的な感じで、『ランダムに表示する』のなら問題はなさそうですが、
常に交互となると、上記のような場合はどうなるでしょうか。

ユーザは常に一つのPCだけでアクセスしているとは限りません。
ネットカフェを点々としている人や、
たまたまパソコンやケータイを買い替えたという人もいるはずです。

それに、やろうと思えばWebブラウザ側でクッキーの抹消だったかなぁ。
名前は覚えていませんが、破棄することも可能です。

あるいは、単純に一年後とかにアクセスするかもしれません。

それらの場合でも常に交互に…となるとちょっと厳しいかも。
やるならPythonなりPHPなりのサーバサイドに頼らないといけないはずです。

JavaScriptでもNode.isってのを使えばできる…かもしれませんが。
(試していないのでわかりませんが)

投稿2021/11/17 02:50

編集2021/11/17 03:07
BeatStar

総合スコア4962

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

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

nonnnonn

2021/11/18 07:37

丁寧に詳しくご回答いただきありがとうござます。 cookieプラグイン使用するのを教えていただき無事に反映することができました。 タグにjqueryと書きましたがまだまだ勉強不足でした。。
guest

0

ベストアンサー

  • 2つ分のページを読んでおいて、条件で切り替える(CSSベースがらく?)
  • 条件をつけてページ内容を非同期で読み込む
  • iframeで呼び出し先を切り替える

あたりでしょうか
切替条件はクッキーやlocalstorageあたりが妥当でしょう

アクセス毎や再読み込み時

というのも

  • ページバックしたときはどうするのか
  • ページ内リンクはどうするのか

など課題がありそうです

sample

とりあえずサンプル

javascript

1<script src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js"></script> 2<script> 3window.addEventListener('DOMContentLoaded', ()=>{ 4 const view=Cookies.get('view')||'A'; 5 document.body.setAttribute("data-view",view); 6 Cookies.set('view',view=='A'?'B':'A'); 7}); 8</script> 9<style> 10body[data-view="A"] #view_B{ 11display:none; 12} 13body[data-view="B"] #view_A{ 14display:none; 15} 16</style> 17<body> 18<div id="view_a"> 19a 20</div> 21<div id="view_b"> 22b 23</div> 24</body>

挙動が想定と違うようでしたら指摘ください

投稿2021/11/17 01:07

編集2021/11/17 02:45
yambejp

総合スコア118163

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

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

nonnnonn

2021/11/17 02:03

質問に対するコメントをありがとうございます。 cssで切り替えられるのでしたら、cssまだわかるのでありがたいです。 ifremeで呼び出し先を切り替えるというのも、意味は分かるのですがやり方調べてみます。 ページバックしても切り替わって、ぺージ内リンクは両ページとも同じです。 localstorageという物調べたのですが、理解が追い付かず、、 こんな質問に答えていただきありがとうございます。もっと自分で調べます。
yambejp

2021/11/17 02:54

クッキーはライブラリを利用するのがおすすめ サンプルをコピペして試してみてください
nonnnonn

2021/11/18 07:30

サンプルをありがとうございます!まさにこの動きで反映することができました。 このようなふわっとした質問にご回答いただき感謝しかないです。評価も1億点つけたいくらいです。 いつも調べるとどうにかなってたのですが今回ホントに。。。この場を知れて助かりました。 もっとこの仕事をしているのなら勉強するべきですよね。今後もあまり頼らないようにして勉強しようと思います。 今回は本当にありがとうございました。
yambejp

2021/11/18 07:37 編集

まずはネットで調べるのが一番 あなたが疑問に思ったことは、たいてい先人が疑問に思って なんらかの結果の備忘録をのこしてくれています 調べるキーワードがわからないとか、疑問に合致するページがヒットしない場合は 普通に聞けば良いと思います。 わからないことをいつまで考えても、休んでいるのと変わりません
guest

0

質問タグの範囲ですと、「body要素 にクラスをつけてデザインをコントロールし、Cookie にクラスの状態を保存して JavaScript で Cookie を参照し変更をする」というのがいいように思います。

ググった感じ、参考になりそうなのはこの辺りのページでしょうか。

javascript - Set body class with jquery cookie plugin - Stack Overflow

JavaScript - jQueryでCSSを切り替えると、画面を更新する毎に画面が点滅してしまう件について。|teratail

投稿2021/11/17 01:02

Lhankor_Mhy

総合スコア37634

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

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

nonnnonn

2021/11/17 02:09

質問に対するコメントをありがとうございます。 body要素にクラス付けるというのが何やら使えそうで、リンク貼っていただいたページ参考にしたいと思います。 このような試したことも記入できないような質問に答えていただき本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問