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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

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

Q&A

解決済

1回答

819閲覧

指定した位置にランダムで抽選したボックスを表示したい

dethtroy

総合スコア44

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

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

0グッド

0クリップ

投稿2018/10/15 04:07

編集2018/10/15 04:08
<html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <body> <div class="wapper"> <?php $ad01 = '<div class="single-topbox"> <dl> <dt>イメージ画像A</dt> <dd> <h2>AAAAA</h2> <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p> </dd> </dl> </div>'; $ad02 = '<div class="single-topbox"> <dl> <dt>イメージ画像B</dt> <dd> <h2>BBBBB</h2> <p>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</p> </dd> </dl> </div>'; $rand_ad = array($ad01, $ad02 ); $ad_disp = array_rand($rand_ad); echo $rand_ad[$ad_disp]; ?> <p>あいうえお</p> <p>かきくけこ</p> <script> $('.wapper p:first-of-type').addClass('first-p'); $(".wapper").each(function(){ $(this).find(".first-p").after($(this).find(".single-topbox")); }) </script> </div> </body> </html>

最初の<p>にclassをつける処理を行い、その下に<div>を移動し、その<div>の中身をランダムで表示させたいのですが、
現在、ボックスの中のddに同じボックスが生成されてしまってます(原因も良く分からずです・・・)。

あいうえお
ボックス(phpでランダム)
かきくけこ

と表示したいのですが、
現在下記のようになってしまいます。

あいうえお
ボックス
ボックス
かきくけこ

ご教授頂けると助かります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ブラウザの開発者ツールで確認していただくとわかると思いますが、PHP側で生成したHTML要素の中のPタグにもfirst-pクラスが追加されています。
first-pクラスのついている要素にPHPで生成したHTML要素を挿入しているため、2つ同じ要素が表示されています。

これは、

$('.wapper p:first-of-type').addClass('first-p');

の部分のセレクターの指定が**「wapperクラスを持つ要素配下の全ての 子孫要素 の中でfirst-of-typeというクラスを保持するPタグ」となっているためです。
このセレクターの指定を
「wapperクラスを持つ全ての要素の 子要素 の中でfirst-of-typeというクラスを保持するPタグ」**に変えることで期待する動作となると思います。る動作となると思います。

投稿2018/10/15 04:27

SE-studying-now

総合スコア351

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

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

dethtroy

2018/10/15 05:14

大きなヒント、ありがとうございました!! single-topbox内のpにremoveClassで対応したら、無事できました(これが一番良いかは不明ですが:汗)!! このたびはありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問