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

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

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

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

JavaScript

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

HTML

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

Q&A

解決済

1回答

13370閲覧

htmlの一部をdisplay:noneにして、クリック時のみ表示する方法

aba623ky

総合スコア63

PHP

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

JavaScript

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

HTML

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

0グッド

1クリップ

投稿2016/09/26 05:32

編集2016/09/28 08:02

イメージ説明

この下がありません。
display:noneで表示されない状態です。

前回の質問を応用させた質問をします。
前回の質問で、htmlの一部をdisplay:noneにして、クリック時のみ表示する方法を学びましたが、

html

1<html> 2<head> 3<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 4</head> 5<body> 6<script> 7 $(function(){ 8 $(".section_trigger_1").on("click",function(){ 9 $(".section_box").hide(); 10 $(".section_box_1").show(); 11 }) 12 $(".section_trigger_2").on("click",function(){ 13 $(".section_box").hide(); 14 $(".section_box_2").show(); 15 }) 16 $(".section_trigger_3").on("click",function(){ 17 $(".section_box").hide(); 18 $(".section_box_3").show(); 19 }) 20 $(".section_trigger_all").on("click",function(){ 21 $(".section_box").show(); 22 }) 23 $(".section_trigger_hide").on("click",function(){ 24 $(".section_box").hide(); 25 }) 26 }) 27</script> 28<style> 29.section_box{ 30 display:none; 31} 32</style> 33<h3 id="menu">メニュー</h3> 34<ul> 35 <li class="section_trigger_1">セクション1</li> 36 <li class="section_trigger_2">セクション2</li> 37 <li class="section_trigger_3">セクション3</li> 38 <li class="section_trigger_all">全部表示させるよ</li> 39 <li class="section_trigger_hide">全部隠すよ</li> 40</ul> 41<div class="section_box_1 section_box"> 42 <h3>セクション1</h3> 43 <p>セクション1の段落。 ...</p> 44</div> 45<div class="section_box_2 section_box"> 46 <h3>セクション2</h3> 47 <p>セクション2の段落。 ...</p> 48</div> 49<div class="section_box_3 section_box"> 50 <h3>セクション3</h3> 51 <p>セクション3の段落。 ...</p> 52</div> 53</body> 54</html> 55

これを応用したhtmlを作成したいです。
以下が僕が応用したコードですが、これだとdisplay:noneで囲った部分がdisplay:noneになりますが、クリックしても表示されません。

参考したコードがjavascriptのため、phpのコードに入れるには何を細くするべきですか?
※javascriptのコードをphpのコードを入れるにはEOFを使うことを知っていますが、EOFを使ってみても変わりません。

php

1<head> 2<script> 3function panelChange(panel){ 4 var check_panel; 5 check_panel = document.forms["form_menu"].elements[panel].checked; 6 if(check_panel){ 7 document.getElementById(panel+"_table").style.display="block";; 8 }else{ 9 document.getElementById(panel+"_table").style.display="none";; 10 } 11} 12 13</script> 14</head> 15

<head></haed>に入れ、htmlを

echo '<input type="checkbox" id="Panel1" onclick="panelChange(this.id);">';
echo '<table class="menu" width=100>';
echo '<caption class="class">';
echo '<label for="Panel1">';
echo $r->name;
echo '</label>';
echo '</caption>';
echo '</td>';
echo '</tr>';
echo '<tbody class="panel_table" id="Panel1_table">';
echo '<tr>';
echo '<th>';
echo 'アクセス';
echo '</th>';
echo '<td>';
echo $r->access;
echo '</td>';
echo '</tr>';
echo '</tbody>';
echo '</table>';
echo '</form>';
echo '</table>';

にしました。
アクセスをdisplay:noneにしてクリック時に表示したいです。

※全体のコードを提示します。
echo '<td>'
echo $r->access以下を非表示表示にしたいです。

<?php $key='私のkey'; $count='10'; $large_area='〇〇'; $start ='2'; $format='xml'; $url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&large_area='.$large_area.'&start='.$start.'&format='.$format; $xml=simplexml_load_file($url); if(!$xml->test){ echo '見つかりませんでした'; } else { foreach($xml->test as $r){ echo '<table>' ; echo '<tr>'; echo '<td>'; echo $r->name; echo '</td>'; echo '<td>'; echo $r->access; echo '</td>'; echo '</tr>'; echo '</table>'; } } ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

今回の命題であればPHPで書かないほうがわかりやすいので
HTMLだけで書き直してください
不要なtdやtrの閉じタグもありHTML自体を正しく書くところから始めてください

なおご要望としてはキャプションをクリックしてtbodyを表示・非表示すればいいのでしょうか?

追記

チェックボックスに保持していいのでしたらidを指定してつけたり消したりしなくてもよいのでは?

javascript

1$(function(){ 2 $('.Panel').each(function(){ 3 if($(this).prop('checked')) $(this).nextAll('table.menu').first().find('tbody').hide(); 4 }); 5 $('.Panel').on('change',function(){ 6 $(this).nextAll('table.menu').first().find('tbody').toggle(); 7 }); 8});

HTML

1<input type="checkbox" id="Panel1" class="Panel"> 2<table class="menu" width=300> 3<caption> 4<label for="Panel1"> 5test caption 1 6</label> 7</caption> 8<tbody> 9<tr> 10<th> 11アクセス 12</th> 13<td> 14test access 1 15</td> 16</tr> 17</tbody> 18</table> 19<input type="checkbox" id="Panel2" class="Panel" checked> 20<table class="menu" width=300> 21<caption> 22<label for="Panel2"> 23test caption 2 24</label> 25</caption> 26<tbody> 27<tr> 28<th> 29アクセス 30</th> 31<td> 32test access 2 33</td> 34</tr> 35</tbody> 36</table> 37

チェックボックス自体はcssで非表示にして構いません

css

以前書いたのはCSS版

CSS

1input.Panel{display:none;} 2input.Panel:checked + table > tbody {display:none;}

HTML

1<input type="checkbox" id="Panel1" class="Panel"> 2<table class="menu" width=300> 3<caption> 4<label for="Panel1"> 5test caption 1 6</label> 7</caption> 8<tbody> 9<tr> 10<th> 11アクセス 12</th> 13<td> 14test access 1 15</td> 16</tr> 17</tbody> 18</table> 19<input type="checkbox" id="Panel2" class="Panel" checked> 20<table class="menu" width=300> 21<caption> 22<label for="Panel2"> 23test caption 2 24</label> 25</caption> 26<tbody> 27<tr> 28<th> 29アクセス 30</th> 31<td> 32test access 2 33</td> 34</tr> 35</tbody> 36</table>

単純なクリックによる表示・非表示

menuクラスのついたtableのcaptionをクリックする度にtbodyを切り替えるだけでいいなら
こうしてください

javascript

1$(function(){ 2 $('table.menu caption').on('click',function(){ 3 $(this).nextAll('tbody').first().toggle(); 4 }); 5});

HTML

1<table class="menu" width=300> 2<caption> 3test caption 1 4</caption> 5<tbody> 6<tr> 7<th> 8アクセス 9</th> 10<td> 11test access 1 12</td> 13</tr> 14</tbody> 15</table> 16<table class="menu" width=300> 17<caption> 18test caption 2 19</caption> 20<tbody style="display:none"> 21<tr> 22<th> 23アクセス 24</th> 25<td> 26test access 2 27</td> 28</tr> 29</tbody> 30</table>

投稿2016/09/26 06:30

編集2016/09/28 08:10
yambejp

総合スコア114810

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

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

yambejp

2016/09/26 10:38

とりあえずcaptionでチェックボックス経由のtbodyを表示・非表示する方法を 追記しておきます
aba623ky

2016/09/27 02:23

これは前回yambejpさんが回答したコードと一緒ですか?
aba623ky

2016/09/27 02:24

phpとjavascript、両方を使いたいです。 また、チェックボックスではなくボタンで実装したいです。
yambejp

2016/09/27 03:22

以前書いたのはCSS版だったかと、追記しておきます phpを使いたいとのことですが、おそらくphpで書いているから HTMLが破綻しています。 HTMLが正しくなるようにphpできちんと出力してください チェックボックスは値をとっておくための仕様です なければないでなんとかなると思いますが、 デフォルトで表示・非表示を指示できないですが大丈夫ですか?
aba623ky

2016/09/27 03:26

最初に書いたjavascriptのコードをphpのファイルに使うにはどうすればいいですか?
aba623ky

2016/09/27 03:27

cssでしたか。では、前みたいな一つだけが非表示表示になる事はないんですね。
aba623ky

2016/09/27 03:28

破綻して居るとはどこらへんがですか? echoを使っているところですか?
yambejp

2016/09/27 03:34

「前みたいな一つだけが非表示表示になる事はない」の意味がわかりませんが 例示しているCSS版を実行していただければcaptionをクリックすると その直後のtbodyの表示、非表示が変更になっていることがわかると思いますが サンプルを実行する気はないんでしょうか?
yambejp

2016/09/27 03:37

>破綻して居るとはどこらへんがですか? 回答の最初にかいてありますよね? 不要なtdやtrが書かれているし、 formやtableのへんな閉じタグだけ書かれています
aba623ky

2016/09/27 04:22 編集

実行したんですが、一つしか非表示表示になりませんでした。 僕が提示したコードはapiを取得するコードです。
aba623ky

2016/09/27 04:28

css版だと良くないからjavascriptを使えとyambejpさんが回答していたので、javascriptを使おうと思いますが、javascriptのコードをphpに使う場合は何を補足すればいいですか?
yambejp

2016/09/27 04:38

繰り返しになりますHTMLをきちんと例示してください。 (質問文書のHTMLのソース部分を書き直してください) まちがったHTMLをいくら例示されても適用することはできません。 またPHPからデータを受け継ぐ部分も$r->nameや$->accessは こちらでデータが再現できません。 逆に私の「追記」部分で記載したHTMLでただしいなら、 そのまま動くはずですが、うごきませんか? 別途質問のなかでボタンを利用したいとの記載もありましたが ボタンを例示しそのボタンをおすとどうしたいのか提示してください
aba623ky

2016/09/27 04:47

apiはホットペーパーです。 全体を表示すればいいですか?
aba623ky

2016/09/27 04:48

なら、全体を表示します。 少々お待ち下さい。 非表示表示にこだわるのは、その方が見やすいからです。
aba623ky

2016/09/27 04:49

質問文に提示します。
yambejp

2016/09/27 06:56

keyとlarge_areaがダミーなので参照できません 出力されるHTMLを貼り付けてください
aba623ky

2016/09/28 07:54

提示します。
aba623ky

2016/09/28 08:02

写真は質問文のトップにあります。
yambejp

2016/09/28 08:11

HTMLが書かれていないと意味がないんですが、一応拡大解釈してさらに追記しておきました 逆に私のソースとどう違うかでもいいのでHTMLとして提示してください
uverworld101nm

2016/09/28 08:13

javascriptをphpファイルにつかうには、javascriptをEOFで囲むのですか?
archiver

2016/09/28 08:19

やっぱり…、だと思った。
aba623ky

2016/09/28 08:35

uverworld101nmさん、自分で質問を立てて下さい。
uverworld101nm

2016/09/28 08:37

すみません。 勝手に人の質問に入って質問にごめんなさい。 archiverさん、aba623kyさん、yambejpさん、すみません。
aba623ky

2016/09/28 08:52

htmlでしたら、全体を表示します。
aba623ky

2016/09/29 05:10

<?php echo <<<EOM <script type="text/javascript"> $(function(){ $('table.menu caption').on('click',function(){ $(this).nextAll('tbody').first().toggle(); }); }); </script> EOM; ?> と出力しましたが、display:noneのままです。
aba623ky

2016/09/29 05:25

質問文に表示します。
aba623ky

2016/09/29 05:28

すみません、質問文に載せられないエラーが出てます。 コメント欄に表示します。 <?php $key='6b6169d454dabd90'; $count='10'; $large_area='Z011'; $start =1; $format='xml'; $url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&large_area='.$large_area.'&start='.$start.'&format='.$format; $xml=simplexml_load_file($url); $total_count=$xml->results_available; if(!$xml->shop){ echo '見つかりませんでした'; } else { foreach($xml->shop as $r){ echo '<table>'; echo '<tr>'; echo '<th>'; echo '店名'; echo '</th>'; echo '<td>'; echo $r->name; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<th>'; echo '禁煙'; echo '</th>'; echo '<td>'; echo $r->non_smoking; echo '</td>'; echo '</tr>'; echo '</table>'; } } ?>
aba623ky

2016/09/29 05:29

また、queryを使ったことがないのですが、使いやすいですか? phpでも使えますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問