2012-06-02 26 views
6

可能性の重複定義された変数へのアクセス:
Dynamically Importing JavasScriptはJavaScript:外部の.jsファイルに

する外部の輸入のJavaScriptの.jsファイルから来る変数にアクセスする方法はありますか?

// JavaScript Document 
var PETNAME = "Beauty"; 

を動的にそのコードをインポートした後、私はPETNAME変数にアクセスしたいが、私は定義された値を取得していない:

を外部の.jsで

は、私は次のようなvarialbeを定義するファイル

alert("Pet Name: " + PETNAME); 

何が間違っている可能性があり、外部の.jsコードからマスターJavaScriptに値を持ち込む方法がありますか?

ありがとうございます。

答えて

10

JSを動的にインポートするには、スクリプトがブラウザによって解析されて利用可能なときに実行されるonreadystatechangeloadのイベントを考慮する必要があります。

function getScript(url, callback) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 

    script.onreadystatechange = callback; 
    script.onload = callback; 

    document.getElementsByTagName('head')[0].appendChild(script); 
} 

そして、あなたはこのようにそれを使用することができます:あなたは、この機能を使用することができます

getScript('path to your js file', function(){ 
    alert("Pet Name: " + PETNAME); 
}); 
+0

+1 - ありがとうございます。私の問題の原因が正しくあり、.jsファイルを動的にインポートすることになります。私は提示されたアドバイスを使用します。あなたの答えは明確で追加の追加は必要ありませんので、私はそれを* Accepted Answer *としたいと思います。 –

+0

@ Bunkai.Satori:それは助けて嬉しい:) – Sarfraz

2

定義されている変数にアクセスする前に、外部ファイルが含まれていることを確認してください。また、外部ファイル内の変数が関数内で定義されていないことを確認してください。その場合、範囲はその関数だけに限定されます。これが変数の前にキーワードvarを削除しようとすると、グローバル変数が作成されます。

+0

+1、あなたの答えのためにどうもありがとうございました。 'var'を削除することは私には新しいものでした。さらに、私は.jsコードを動的にインポートしていることに言及しておきます。私は知らなかった、それは答えに不可欠である。ありがとうございました。 –

+1

varキーワードを削除することは非常に悪いことですが、グローバル変数を作成して地球環境を汚染します。 – Sarfraz

+0

@Sarfraz、変数がグローバルになるように他の方法がありますか?言い換えれば、 'var'を削除するより良い代替手段がありますか? –

関連する問題