• ベストアンサー

「関数が定義されていない」とのエラーが出る

こんにちは,よろしくお願いします。 何が何だか分からなくて困っています。 IEでは問題なく動くのに,Firefoxだと関数が定義されていないとのエラーが出ます。「<関数名> is not defined 」 スクリプトは,外部ファイル化してあります。キータイプの間違いもありません。何度も確認しました。 function aaa(){  (スクリプト) } を <body onload="aaa()"> のようにして呼び出しています。 いったい,何が悪いのでしょうか? また,Operaだと,「リンク先のスクリプトを読み込むことができません」とのエラーが出ます。 元になるPHPファイルでは, <script type="text/javascript" language="javascript" src="../javascript/AAAAA.js"></script> のようにして呼び出しています。 もちろん,ファイルネームのタイプミスはありません。 ちなみに,スクリプトの内容は,日付関連のコードを記述しています。 試行錯誤している時に,他の日付関連のコードを実行したときに, dayoption is not defined というエラーが出たことがあります。 関数が存在しているのに,定義されていないと出るのは,もしかすると,日付関連の関数等の使い間違いではないかとも考えています。 使っているものは,Date()とgetYear()です。これらのうちのどちらかがFirefoxやOperaだとサポートされていないのでしょうか? どうか御指導ください。よろしくお願いします。

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

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

たぶんなんらかの凡ミスでしょうけど・・・・ firefoxでだめなら、firefoxのアドオンのfirebugで検証するのが一番です

emikouji
質問者

補足

早速のお答えありがとうございました。 早速,firebugをインストールしました。 そうしたところ, <script type="text/javascript" language="javascript" src="../javascript/AAAAA.js"></script> で指定したAAAAA.jsを開くことができていないことが分かりました。 この 「src=」 以下にある相対参照の記述が原因のようです。 IEだとこの記述でうまくリンクして,firefoxやOperaだとリンクできないようです。 もっと,具体的に言うと,../の部分が機能せず,親ディレクトリを呼べないでいる状況のようです。 この記述をどのように訂正,すれば良いのでしょうか?よろしければ御指導ください。

その他の回答 (3)

  • zeeeg
  • ベストアンサー率55% (5/9)
回答No.4

・yyr446 さんの内容についてちょっと補足。 1. >charset="utf-8" 日本語コードの種類がそうとは限りませんし、 これは特に書く必要はありません。 2.>language= これでも動作しますが、language=を使うことは推奨されていません。 出来ればtype=を使いましょう。 ・ところで alert()を使う場合について説明を省略してましたが、 window.alert("Test"); のように、引数などを省略しないで記述しましょう。 (Firefoxでは引数の省略は許されないみたい。)

emikouji
質問者

補足

zeeegさん,ありがとうございます。 いろいろとやってみたら,<script>要素のsrc属性の修正でJavascriptが走るようになりました。 具体的に言うと, src="../javascript/AAAAA.js" とあったのを src="../../javascript/AAAAA.js" としたら,プログラムが正常に走りました。 IEの方も矛盾なく動いています。 こんなことってあるのでしょうか?なぜこんなことが起こるのでしょうか?

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

まさか、と思いますが、もしかして Webサーバー側が、.htaccessでブラウザーのユーザーエージェント の値を見て、javascriptディレクトリーへのアクセスをIEのみに制限 している可能性(IEでしか使えないjavascriptのため)はありませんか? <script>の書き方は、普通 <script type="text/javascript" charset="utf-8" src="../javascript/AAAAA.js"></script> か、 <script language="javascript" src="../javascript/AAAAA.js"></script> のどっちかが多いですが、2つ書いても動作するはず。 SRCのパスの書き方は、IEでうまくいっているなら、FireFoxで だめというのはありえないです。

emikouji
質問者

お礼

yyr446さん,ありがとうございます。 >IEでしか使えないjavascript このようなことはないようです。alert()だけの簡単なものは,エラーが出ませんので・・・。 >SRCのパスの書き方は、IEでうまくいっているなら、FireFoxで >だめというのはありえないです。 ですよね,でもこれを試しに直したらうまくいきました。いったいどういうことなのでしょうか?よけいな疑問がまた増えてしまいました。

  • zeeeg
  • ベストアンサー率55% (5/9)
回答No.2

凡ミスでしょうね。 質問で例示している function みたいに全角の空白文字が入っているとか 前後のscript宣言が間違ってるとか...あてずっぽうですが。 >関数が存在しているのに,定義されていないと出るのは, >もしかすると,日付関連の関数等の使い間違いではないかとも考えています。 関数が正しく呼ばれていないのか、関数の中身の問題なのかどうかは、 関数の中身を消してalert()文などと置き換えてみたら一発で分かります。

emikouji
質問者

補足

お答ありがとうございます。 No.1にも書きましたが,Zeeegさんがおっしゃるとおり,script宣言が間違っているようです。 src属性のリンクの入力の仕方,相対参照の正しい記述の仕方,絶対参照の記述の仕方などを,御教授願えればと思います。よろしくお願いします。

関連するQ&A