0

2つの外部Javascriptファイルがあります。1つのファイルで変数を宣言し、他のファイルから変数にアクセスしようとしています。アクセスしようとすると、が返されますundefined

<script src="script1.js"></script>
<script src="script2.js"></script>

script1

$(function(){

    var myvar=35;
});

script2

$(function(){

    alert(myvar); //this line causing error undefined.

});
4

3 に答える 3

4

あなたの変数はグローバルではありません。関数内で宣言したため、その関数に対してローカルです。ドキュメント準備完了関数のvarにステートメントを移動する必要があります。

var myvar=35;

$(function(){
    // other document ready stuff here, including
    // using or assigning a value to myvar if needed
});

その後、グローバル スコープになり、他のスクリプト ファイルからアクセスできます (宣言されたファイルの後に含まれている場合)。

ドキュメントの準備が整うまで割り当てる値がわからない場合は、次のようにします。

var myvar;       // declare variable

$(function(){
    myvar = 35;  // assign value
});

他のスクリプトのドキュメント準備ハンドラーが実行されるまで値を使用しようとしないため、これは問題ありません。

于 2012-08-21T05:31:19.820 に答える
1

答えに加えて、最初のjavascriptファイルに「var」キーワードをドロップすると、コードが機能します。. . .

「var」をドロップすると、値がグローバル変数に割り当てられます。値が存在しない場合は、グローバル変数が作成されます。. .so、グローバル myvar と同じになります

  <script src="script1.js"></script>
  <script src="script2.js"></script>

スクリプト 1:

$(function(){


myvar=35;

});

スクリプト 2:

$(function(){

alert(myvar); //this will work

});
于 2012-08-21T07:05:35.263 に答える
1

Script1.js

  var i=10;

Script2.js

  function call(){
      alert(i);
  }

サンプル.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script type="text/javascript" charset="utf-8" src="Script1.js" ></script>
<script type="text/javascript" charset="utf-8" src="Script2.js" ></script>
<script>
</script>
<BODY onload='call();'>
</BODY>
</HTML>

これがお役に立てば幸いです

于 2012-08-21T05:40:00.417 に答える