• ベストアンサー

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> このプログラムは、他の質問を参考にして テーブル上でカーソルをのせると その行の色が変化するものです --------------------------- これですと エラーは出ませんが データが表示されません。 ご教示して頂けたら幸いです。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

こういうものは、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ファイルを いじるだけでいろいろ見え方を変えることができます

wee
質問者

補足

ご返事有り難うございました。 大変に参考になりました。 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 の羅列は表示されますが カーソルをのせてても色が変化しないのですが・・・。 なにか私のやり方に問題があるのでしょうか?

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

クライアント側のOSとブラウザの種類、バージョンなど補足が必要。 Win版のIE6とfirefox2では動きましたが・・・

wee
質問者

お礼

ご返事有り難うございました。 IEは6です。 色々と試してみたのですが・・・。 さらに確認してみます。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

「phpから(JavaScriptを)呼び出す」という表現はちょっとあり得ないです。あくまでもJavaScriptはクライアント(ブラウザ)が解釈して実行するものです。 この例でいうと、phpがブラウザに返した内容(ブラウザのソース表示で確認できますよね?)がどうであるか次第ということです。ブラウザでのソースを確認してください。 >データが表示されません。 データはもちろん、その以外の(htmlとしての)ほとんどの部分が省略されているので、このソースだけでは何とも言えません。ただ、 >テーブル上でカーソルをのせると であれば、onClickでなくonmouseover/onmouseoutを使うべきでは?

wee
質問者

お礼

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

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

>PHPからjavascriptを呼び出したいのですが、 「呼び出す」の定義が曖昧でなんとも言いがたいのですが、 私が理解したあなたの「呼び出す」とは、PHPからJavaScriptを動かして背景色を変更する。 のように理解します PHPはあくまでもサーバー内でのみ動作します JavaScriptはあくまでもブラウザ内(PC内)でのみ動作します PHPからJavaScriptを呼び出すことは不可能です PHPを利用して、動的にJavaScriptを生成することは可能です

wee
質問者

補足

こんにちは。 大変に参考になりました。 >私が理解したあなたの「呼び出す」とは、PHPからJavaScriptを動かして背景色を変更する。 仰る通りです。 >PHPを利用して、動的にJavaScriptを生成することは可能です そうなんですね 動的に生成というのは どのようにするのでしょうか? とても厚かましく恐縮ですが ご教示して頂けたら幸いです。

関連するQ&A