2009-05-08 2 views
0

.jsファイル内の関数を呼び出す:私はtest.htmlという中でこれを持って

<script> 
    function h(){ 
     g(); 
    } 
<script> 

k.jsがありますtest.htmlという中

g(); 

を私は正常h()に入ったが、ないg()。私はスクリプトタグとしてk.jsを追加しました: scriptTag.src="k.js"

全く同じg()が見つかりません。

私は間違っていますか?

+0

私はfirebugでチェックしているので、k.jsソースを持つスクリプトはdomで 'h()'より上位です。 また、h()を呼び出す前に、.html –

+0

のリンク(アンカータグ)をクリックしたときにh()を呼び出すため、k.jsがロードされていることを確認してください。警告( '1'); g(); アラート( '2'); } これは最初のアラートだけです。 –

+0

それは非常に緊急で、私はすでに5時間を費やしています... –

答えて

0

h()を呼び出す前にk.jsがロードされていることを確認しましたか?

k.jsが正常に見つかり、パスが正しく解決されていますか?

0

呼び出している関数が呼び出し元の行より上位であることを確認してください。

+0

私はfirebugでチェックしているので、k.jsソースを持つスクリプトがdomのほうが高く、 'h()'であることを確かめてください。また、h()を呼び出す前にk.jsがロードされていることを確認してください。imが.html –

0

I added k.js as a script tag [ scriptTag.src="k.js" ]

あなたのスクリプトタグを動的に作成しているようですね。その場合は、DOMに注入してからブラウザにロードしてからアクセスしてみてください。スクリプトノードを作成するだけで、どこかに注入するまで何もしません。

+0

からリンク(アンカータグ)をクリックしたときにh()を呼び出すと、 '); g();アラート( '2'); }それは最初のアラートだけです! –

0

あなたのコードはこういう風に見えますか?

scriptTag.type = 'text/javascript'; 

そして、前述のように、スクリプトがDOMに挿入する必要があります。

var scriptTag = document.createElement('script'); 
scriptTag.src = 'k.js'; 

本当に、あなたはこのラインを有するべきです。これらの2行は、問題を解決する必要があります:

その結果
var head = document.getElementsByTagName('head')[0]; 
head.appendChild(scriptTag); 

:今、なぜあなたはこれを使用していない

var scriptTag = document.createElement('script'); 
scriptTag.src = 'k.js'; 
scriptTag.type = 'text/javascript'; 

var head = document.getElementsByTagName('head')[0]; 
head.appendChild(scriptTag); 

<script type="text/javascript" src="k.js" /> 
+0

これはまさにこのようでした: var scriptTag = document.createElement( 'script'); scriptTag.src = 'k.js'; scriptTag.type = 'text/javascript'; var head = document.getElementsByTagName( 'head')[0]; head.appendChild(scriptTag); それを動的に追加して以来... –

+0

それは機能しましたか? – Eric

+0

悲しいことに、私はtryとcatchのdomの下位レベルのスクリプトからg()を呼び出してみました。メッセージは "Refernce error:gは定義されていません" –

2

あなたはk.jsがこれを持っていることを言った:

g(); 

これはを呼び出すための有効な機能ではない、それだけではまだ定義されていないg();を呼び出すようにしようとしています。持つべき何k.js

は次のようなものです:

function g() { alert('you called g()'); } 
1

あなたがたときに、文書のロードまたはいつでもイベントが発生しスクリプトを追加しようとしているようですね。関数を含む外部ファイルがdomに追加された直後に関数を呼び出そうとすると、エラーが発生します。外部ファイルはダウンロードされません。このプロセスには潜在性があります。コンピュータは、.jsファイルをダウンロードできるよりも速くクライアント側スクリプトを循環します。設定されたタイムアウトが発生すると、動作しているはずです。私は間違っているかもしれませんが、それは私の考えです...

関連する問題