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

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

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

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

JavaScript

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

Q&A

解決済

3回答

2327閲覧

タブ画像の切り替え

taishi_574

総合スコア39

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2016/10/26 04:31

編集2016/10/27 09:31

プログラム初心者です。
PHPでタブと$_REQUESTを使ったシステムを作成しています。
ですが、うまく表示されません。

イメージはこんな感じです。
ページとしては、上の12個のボタンがr=0で下のABCがt=0です。
ページとしては、上の12個のボタンがr=0で下のABCがt=0です。
###発生している問題・エラーメッセージ

タブは画像での実装になるので、javascriptのクリックイベントで
画像をクリックされたらURLの末尾に_0を付け加えて表示するというものです。
下のコードは何度も使っていたのですが、今回$_REQUESTで引数を利用するページを作ろうとすると上手くいきません。
javascriptは常に起動しているという解釈だったのですが違うのでしょうか?
下のJSのコードでhoverイベントにすると問題なく動きますし、clickイベントも一瞬画像が切り替わって
元の画像に戻るという状況です。

お知恵をお貸しいただけると幸いです。

###該当のソースコード

$pIntRno=@$_REQUEST['r']; $pIntTabno=@$_REQUEST['t']; //javascript $(function(){ var handler = $('ul#nav li a'); // ウィンドウを開いた時のタブの位置 var url = document.URL; var urlId = url.substr(url.lastIndexOf('#')); var urlIdJudgment = urlId.lastIndexOf('#'); $('ul#nav').each(function(){ $('#tab-box > div:first').show(); var imgSrc = $('ul#nav li:first img').attr('src'); var imgDot = imgSrc.lastIndexOf('.'); var onSrc = imgSrc.substr(0, imgDot) + '_o' + imgSrc.substr(imgDot, 4); $('ul#nav li:first img').attr('src',onSrc).addClass('tab-on'); handler.click(function() { // クリックしたタブ画像をオンの状態に var imgSrc = $(this).children('img').attr('src').replace(/_o/g, ""); var imgDot = imgSrc.lastIndexOf('.'); var onSrc = imgSrc.substr(0, imgDot) + '_o' + imgSrc.substr(imgDot, 4); $(this).children('img').attr('src',onSrc); }) }); //PHP <div id="tab-box"> <ul id="nav"> <?php for($i=1;$i<=12;$i++){ echo '<li class="r_tab_Btn r_tab_e"><a href ="index.php?r='.$i.'&t='.$pIntTabno.'"><img src="img/Btn/'.$i.'R_e.png">'; } ?> </ul> /* コンテンツ */ </div>

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
php-5.4.36
jquery-1.8.3.min

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

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

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

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

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

yambejp

2016/10/26 04:44

PHP表示の部分に、他のHTMLの部分も付加したほうがよいでしょう
kei344

2016/10/26 04:50 編集

コードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。また、$_REQUESTが見当たりません。
guest

回答3

0

リンクをクリックしたら画像がかわるのですよね?
でもリンクなので次のページに移動しちゃうので画像がかわる意味があるのでしょうか?

投稿2016/10/26 08:15

yambejp

総合スコア114829

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

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

taishi_574

2016/10/27 09:32

回答ありがとうございます。 イメージを ページは同じものなのですが、rとtで表示する内容を変えるイメージです。
guest

0

JavaScript

1handler.click(function() { 2 // クリックしたタブ画像をオンの状態に 3 var imgSrc = $(this).children('img').attr('src').replace(/_o/g, ""); 4 var imgDot = imgSrc.lastIndexOf('.'); 5 var onSrc = imgSrc.substr(0, imgDot) + '_o' + imgSrc.substr(imgDot, 4); 6 $(this).children('img').attr('src',onSrc); 7 return false; // これが無ければページを移動してしまう(してもいいならURLをそれにあったものに最初からしておく必要がある) 8} );

あと、エスケープしないと好きな文字列を埋め込めてしまいます。

PHP

1echo '<li class="r_tab_Btn r_tab_e"><a href ="index.php?r='.$i.'&t='.htmlspecialchars( $pIntTabno, ENT_QUOTES, 'UTF-8' ).'"><img src="img/Btn/'.$i.'R_e.png">';

【$_GET, $_POSTなどを受け取る際の処理 - Qiita】
http://qiita.com/mpyw/items/2f9955db1c02eeef43ea


追記:

PHP

1<?php 2$pIntTabno = filter_input( INPUT_GET, 't', FILTER_VALIDATE_INT ); ?> 3<div id="tab-box"> 4<ul id="nav"> 5<?php 6for( $i = 1; $i <= 12 ; $i++ ) { 7 echo '<li class="r_tab_Btn r_tab_e"><a href ="index.php?r='.$i.'&t='.$i.'"><img src="img/Btn/'.$i.'R_e'; 8 if ( $i === $pIntTabno ) { 9 echo '_o'; 10 } 11 echo '.png">'; 12} ?> 13</ul>

【PHPでGET・POSTを取得する(filter input()) - wiki - PCスキルの小技・忘却防止メモ】
http://tips.recatnap.info/wiki/PHPでGET・POSTを取得する(filter_input())


追記2:

こういうこと?

PHP

1$rInt = (int) filter_input( INPUT_GET, 'r', FILTER_VALIDATE_INT ); 2$tInt = (int) filter_input( INPUT_GET, 't', FILTER_VALIDATE_INT ); 3if ( $rInt === 0 ) { $rInt++; } 4if ( $tInt === 0 ) { $tInt++; } 5 ?> 6<div id="tab-box"> 7<ul id="r_nav"> 8<?php 9for( $i = 1; $i <= 12 ; $i++ ) { 10 echo '<li class="r_tab_Btn r_tab_e"><a href ="index.php?r='.$i.'&t='.$tInt.'"><img src="img/Btn/'.$i.'R_e'; 11 if ( $i === $rInt ) { 12 echo '_o'; 13 } 14 echo '.png">'; 15} ?> 16</ul> 17<ul id="t_nav"> 18<?php 19for( $i = 1; $i <= 3 ; $i++ ) { 20 echo '<li class="r_tab_Btn r_tab_e"><a href ="index.php?r='.$rInt.'&t='.$i.'"><img src="img/Btn/'.$i.'T_e'; 21 if ( $i === $tInt ) { 22 echo '_o'; 23 } 24 echo '.png">'; 25} ?> 26</ul>

投稿2016/10/26 07:22

編集2016/10/27 16:19
kei344

総合スコア69407

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

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

taishi_574

2016/10/26 08:00

回答ありがとうございます。 画像は切り替わったのですが、aタグが効かなくなってしまいました。。。 >URLをそれにあったものに最初からしておく必要がある というのはページをタブの数だけ用意するということでしょうか?
kei344

2016/10/26 08:40

> aタグが効かなくなってしまいました はい。質問タイトルにあった「画像の切り替え」を優先したためです。 現在書かれているhandler.clickはリンクで移動するなら必要ない関数です。 index.php?r=0&t=0 の「t」がタブなのであれば、ページを表示する時点でどこが開いているタブかわかるはずなので、JavaScriptで画像パスを書き換えなくても良いのではないでしょうか。 後で回答に追記します。
taishi_574

2016/10/27 09:36

すみません。僕の質問の書き方がよくなかったです。。。 書いてくれた方法でやってみます。 イメージを追加しました。 ページとしては、上の12個のボタンがr=0で下のABCがt=0です。
guest

0

自己解決

#自己解決しました
javascriptはあきらめてパラメータで渡した値でcssを分岐させるような方法で実装しました。

回答いただいた方々ありがとうございました。

投稿2017/01/21 09:43

taishi_574

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問