2

いくつかの外部 JavaScript ファイルを含む HTML ファイルがあります。実際の HTML および JavaScript ファイルからいくらか単純化した例を次に示します。

<head>
  <title>Control Page</title>
  <script language="JavaScript" src="control.js"></script>
  <script language="JavaScript">
    var myWindow;
    var controlForm;

    function onPageLoad() {
      myWindow     = document.getElementById('iframe1');
      controlForm  = document.getElementById('ControlForm');
    }
  </script>
</head>
<body onLoad="onPageLoad()">
  ....
</body>
</html>

そして、私のJavaScriptファイルでcontrol.js

function messageArrival(message) {
    chatwindow.contentWindow.document.write(message)
}

function makeNetMeetingCall() {
  controlForm.Status.value = ....
}

....

私の質問: 外部 JavaScript ファイルを検証すると、メインの HTML ファイルで定義されている変数がファイル内のどこにも宣言されていないため、エラーが表示され*.jsます。たとえば、MyEclipse の JavaScript エディターは、可視スコープで定義されていない変数が使用されていると不平を言います。これらの変数を JavaScript ファイルで宣言して、変数が外部で定義されることが期待されることを明確にするにはどうすればよいですか。これexternは、C の " " に似ています。

4

4 に答える 4

4

これは、JSよりもMyEclipseのJSエディターの問題のように聞こえます。

残念ながら、私はMyEclipseに精通していません。ただし、コメントでグローバル変数を定義することでグローバル変数を説明する、優れたJSバリデーターであるJSLintを知っています。

/*global getElementByAttribute, breakCycles, hanoi */
于 2009-03-27T00:20:49.230 に答える
1

control.jsファイルのグローバルスコープで変数を宣言できます。

var controlForm;
function makeNetMeetingCall() {
 // ...
}

これは、最初に実行されるため、これらのオブジェクトを最終的に定義するコードに干渉しません。しかし、そうでなかったとしても、イニシャライザがなければ、何も上書きされません。

上書きについての証拠が必要な場合は、JSシェルでこれを行ってください。

$ js
js> var x = 1;
js> print( x );
1
js> var x;
js> print( x );
1
js>
于 2009-03-27T00:24:39.580 に答える
0

実際には、問題はあなたの「IDE」がそれらを認識していないということです。HTMLページのJS変数を外部のjavascriptファイルに接続していません。これを回避する1つの方法は、変数宣言を外部のjavascriptファイルに入れることです。

于 2009-03-27T00:19:48.907 に答える
0

Controls.jsスクリプトを含める前に、変数を宣言する必要があります。

<script language="JavaScript">
var myWindow;
var controlForm;
function onPageLoad() {
   myWindow     = document.getElementById('iframe1');
   controlForm  = document.getElementById('ControlForm');
}
</script>
<script language="JavaScript" src="control.js"></script>

これで日食の不満は止まるはずですが、実行は同じです。

于 2009-03-27T00:20:22.180 に答える