• ベストアンサー

PHPの外部テキストファイルにJavaScriptを記述する方法

PHP初心者です。今、Let'sPHPさんのP++BBSを利用して掲示板を作成しているのですが、JavaScriptが動作せずエラーになって困っています。P++BBSは、 --------------------------------------------------- define("HEADFILE", "skin/head.txt");  //定義 include(HEADFILE); //表示 --------------------------------------------------- のようにして、外部テキストにHTML<html><head>~</body></html>までを分割記述し、表示する各場所に定数呼び出しするタイプの掲示板です。 問題は、外部テキストのヘッダー部に <script type="text/javascript" src="my.js"></script> と記述しても反映せずエラーになってしまうことです。PHP内に直接記述すると正常に動作するのですが、どうにかスキンを活かした方法で使用したいと思っています。 使用したいJavaScriptの関数は、<body onload="関数">と、<a href="" onmouseover="関数" onmouseout="関数">の2種のみです。 初心者の質問で申し訳ありませんが、ご助言いただけると嬉しいです。よろしくお願いします!!

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

  • ベストアンサー
noname#87667
noname#87667
回答No.2

my.jsはどこに置かれていますか? 少なくとも、jsファイルはドキュメントルートの下に置かないと動作しないと思います。

arufuu
質問者

補足

回答ありがとうございます。 ためしに、全て同階層にして、リンクもつなぎなおしてみたのですが、やはり<body onload="">を記述した箇所がエラーになってしまいました。本体のPHP内にJavaScriptを記述して、function MyImage0 { MM_SwapImage('Image0','','img.jpg',1);} と書いて、テキスト内のHTMLに記述したら、エラーがでませんでした。''を書くのがダメなんでしょうか?もしわかれば教えていただきたいです。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#87667
noname#87667
回答No.3

>やはり<body onload="">を記述した箇所がエラーになってしまいました。 あり得ないと思いますが、「print "<body onload="">"」とは書いてませんよね?この場合は「print "<body onload=\"\">"」とダブルクォーテーションの前にエスケープ文字「\」をつけないとエラーになります。

arufuu
質問者

補足

回答ありがとうございます。<body onload=\" \">でちゃんと記述していたのですが、どうしてもエラーでダメでした。仕方がないので別の方法で試してみようと思ってSpryで組み込みしたら、問題なく思ったとおりに動作させることができました。PHPはちょっと難しすぎたので、もう少し勉強しようと思います。ありがとうございました。

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>エラーになってしまう まず、エラーとは何かを書くべきです。 今のままではありとあらゆるエラーを想定して回答しなくてはなりません。 具体的なエラーなどがわからないと意味のない回答になるでしょう。 すくなくとも外部jsファイルをphpから呼び出すとエラーになるという 症状は通例ではありえません。 どこか記述ミスなどボンヘッドがあると推測されます。 firefoxにfirebugなどをいれてチェックすると、かなり切り分けができる と思いますよ

arufuu
質問者

補足

回答ありがとうございます。すみません。エラー文を記述し忘れていました。以下、エラーの内容です。 ---------------------------------------------------------- // JavaScript Document function MM_swapImgRestore() { var i,x,a=document.MM_sr; for(i=0;a&&i0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i Parse error: syntax error, unexpected T_STRING in エラー場所 --------------------------------------------------------------- firebugの使用方法はあまりわからなかったので、表示されたエラー文のみ記述させてもらいました。シンタックスエラーと書いてあるので、スペルミスも確認してみたのですが、どうしてもわかりませんでした。お手数ですが、再度回答いただけると助かります。

すると、全ての回答が全文表示されます。

関連するQ&A