2012-02-03 16 views
0

内部のJsファイル私は特定のアルゴリズムを持つ関数を持っています。Javascriptでグローバル変数を宣言する方法

xmlファイルを読み取り、データを変数名wordDataに変換する場合。関数の内部

は、次のコード行を持っています

var wordData = xhr.responseXML.getElementsByTagName (Node1); 

私は

function language() { 
    lang = "heb"; 
    if (lang == "heb") { 
     thisWord = wordArrayHeb[indeXML]; 
    } 
    else { 
     thisWord = wordArrayEng[indeXML]; 
    } 
    alert("language thisWord:=" + thisWord); 
} 


function setWord() { 

    if (xhr.readyState == 4) { 
     if (xhr.status == 200) { 
      if (xhr.responseXML) { 
       var wordData = xhr.responseXML.getElementsByTagName(Node1); 
       XMLength = wordData.length; 
       for (i = 0; i < XMLength; i++) { 
        wordArrayHeb[i] = wordData[i].getElementsByTagName(Node2)[0].firstChild.nodeValue; 
        wordArrayEng[i] = wordData[i].getElementsByTagName(Node3)[0].firstChild.nodeValue; 
       } 
       language(); 

      } 
     } 
    } 

} 

関数内の関数やグローバル 外「グローバルとしてwordDataを」変数を設定することはできません変数thisWordはグローバルではないvarible wordDataから実行されます。 関数の外では、varible thisWordは空です 関数内にあり、値を持っています。

助けが大好きです。 ありがとうございました!

私はグローバルvarが最良の選択ではないとして、それを設定し、関数言語内wordDataにアクセスしたい場合、あなたはそのようなパラメータとして渡すべきだと思い
+0

私は自分の答えを変えました。私はそれがあなたに良く合うはずだと思います。 –

答えて

0

language(wordData); 

や関数を宣言で言語()はパラメータを受け入れるよう、ちょうどそれを作る:

function language(wordData) { 
... 
} 
+0

私のコードhttp://centerwow.com/ajax/ajax1/wordData.rarあなたがもしあなたが入力したserchの下に "Eric"という言葉を見るでしょう。ありがとう –

+0

これらはトラックを追跡するのが難しく、通常はスコープが意図されていないので反パターンの並べ替え –

2

は、単に宣言

var wordData; 

を関数外に変更し、行を次のように変更してください。

wordData = xhr.responseXML.getElementsByTagName (Node1); 

したがって、var宣言を削除してください。

1

あなたは、ウィンドウオブジェクトを使用して、どこにでもJSのグローバルVARを作成することができます

window['wordData'] = xhr.responseXML.getElementsByTagName(Node1); 

または

window.wordData = xhr.responseXML.getElementsByTagName(Node1); 

を次にwordDataがグローバルにアクセスすることができます。これはあなたの問題に最適な解決策ではないかもしれません。代わりに関数の引数と戻り値を使うことを検討してください。

+0

残念ながら、それは動作していません。いずれかが私を助けることができる場合plz私はthxを感謝します。私のskype centerWow –

関連する問題