みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPからjavascriptを呼び出したいの

1台のPCをサーバ&クライアントにしています。
ただ今PHPとPostgresqlの勉強をしています。

いつも質問に答えてくれてありがとうございます。

PHPからjavascriptを呼び出したいのですが、
どのようにして書けばいいのか
分かりません。

---------------------------
<script type="text/javascript">
<!--

<?php





print("<tr onclick='setBGCOLOR(this)'>");





?>

var oldRow;
function setBGCOLOR(r){
if(oldRow!=null)oldRow.style.backgroundColor="#FFF";//WHITE
oldRow=r;
r.style.backgroundColor="#3FF";//薄いBLUE
}
//-->
</script>

このプログラムは、他の質問を参考にして
テーブル上でカーソルをのせると
その行の色が変化するものです
---------------------------

これですと
エラーは出ませんが
データが表示されません。

ご教示して頂けたら幸いです。

投稿日時 - 2008-01-24 13:08:57

QNo.3709087

wee

困ってます

質問者が選んだベストアンサー

こういうものは、PHPでこねくり回さない。

PHPでやる必要があるのは、tableにclassをつけてやる程度。

以下例です。
//hoge.php
<html>
<head>
<link rel="stylesheet" type="text/css" href="hoge.css" />
<script type="text/javascript" src="hoge.js"></script>
</head>
<body>
<?PHP
print <<<eof
<table class="hoge">
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
</table>
<table class="fuga">
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
</table>
<table class="hoge">
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td></tr>
</table>

eof;
?>
</body>
</html>

//hoge.js
window.onload=function(){
setHogeTable();
}
function setHogeTable(){
var tables=document.getElementsByTagName("table");
for(var i=0;i<tables.length;i++){
if(tables[i].className=="hoge"){
var trs=tables[i].getElementsByTagName("tr");
for(var j=0;j<trs.length;j++){
trs[j].className="c3ff";
trs[j].onmouseover=function(){
this.className=this.className=="c3ff"?"cfff":"c3ff";
}
trs[j].onmouseout=function(){
this.className="c3ff";
}
}
}
}
}

//hoge.css
tr.c3ff{
background-Color:#3FF;
}
tr.cfff{
background-Color:#FFF;
}


※実際にはもう少し複雑な仕組みを作った方がよいですが
基本的にはクラスごと変えてやるので、cssファイルを
いじるだけでいろいろ見え方を変えることができます

投稿日時 - 2008-01-24 15:42:07

補足

ご返事有り難うございました。
大変に参考になりました。

hoge.php
hoge.js
hoge.css
の3つのファイルをコピペして作成しました。

「hoge.php」を開くと
test test test test
test test test test
test test test test
test test test test
の羅列は表示されますが
カーソルをのせてても色が変化しないのですが・・・。

なにか私のやり方に問題があるのでしょうか?

投稿日時 - 2008-01-24 16:10:46

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

クライアント側のOSとブラウザの種類、バージョンなど補足が必要。

Win版のIE6とfirefox2では動きましたが・・・

投稿日時 - 2008-01-24 18:26:17

お礼

ご返事有り難うございました。

IEは6です。
色々と試してみたのですが・・・。
さらに確認してみます。

投稿日時 - 2008-01-25 14:19:44

ANo.2

「phpから(JavaScriptを)呼び出す」という表現はちょっとあり得ないです。あくまでもJavaScriptはクライアント(ブラウザ)が解釈して実行するものです。

この例でいうと、phpがブラウザに返した内容(ブラウザのソース表示で確認できますよね?)がどうであるか次第ということです。ブラウザでのソースを確認してください。

>データが表示されません。

データはもちろん、その以外の(htmlとしての)ほとんどの部分が省略されているので、このソースだけでは何とも言えません。ただ、

>テーブル上でカーソルをのせると

であれば、onClickでなくonmouseover/onmouseoutを使うべきでは?

投稿日時 - 2008-01-24 14:16:40

お礼

こんにちは。

>であれば、onClickでなくonmouseover/onmouseoutを使うべきでは?
そうなんですね
とても参考になりました。

投稿日時 - 2008-01-24 15:47:41

ANo.1

>PHPからjavascriptを呼び出したいのですが、
「呼び出す」の定義が曖昧でなんとも言いがたいのですが、
私が理解したあなたの「呼び出す」とは、PHPからJavaScriptを動かして背景色を変更する。
のように理解します



PHPはあくまでもサーバー内でのみ動作します
JavaScriptはあくまでもブラウザ内(PC内)でのみ動作します

PHPからJavaScriptを呼び出すことは不可能です
PHPを利用して、動的にJavaScriptを生成することは可能です

投稿日時 - 2008-01-24 14:14:15

補足

こんにちは。
大変に参考になりました。

>私が理解したあなたの「呼び出す」とは、PHPからJavaScriptを動かして背景色を変更する。
仰る通りです。

>PHPを利用して、動的にJavaScriptを生成することは可能です
そうなんですね
動的に生成というのは
どのようにするのでしょうか?
とても厚かましく恐縮ですが
ご教示して頂けたら幸いです。

投稿日時 - 2008-01-24 15:40:38

あなたにオススメの質問