2011-12-24 5 views
1

私がしようとしていることは次のとおりです。私はRaphael.jsを使ってスケッチのコードをHTMLファイルに書いています。ファイルをよりきれいに保つために、別のファイルpathsFile.jsに長いパスを定義したいので、そのパスからアクセスできます。 Raphael.jsを使用していますが、私の質問は、Raphael.jsよりもJavascriptと関係があります。ファイル1でファイル2が使用されている場合、ファイル2のファイル1で定義されたjavascript変数を使用します。

次作品:

<!doctype html> 
<html lang="en"> 

    <head> 
     <meta charset="utf-8">   
     <script src="./raphaelJS/raphael.js"></script> 
     <script src="./pathsFile.js"></script> 
    </head> 

    <body> 

     <div id="main"> 

     <div id="figSellerBuyer"></div> 
     <script> 
      s = 1; 
      attrbs = {stroke: "white", "stroke-width": 2}; 
      pw = 850; 
      ph = 450; 

      paper = new Raphael('figSellerBuyer', pw*s, ph*s); 
        market = paper.path(paths.marketBoundary); 

      </script> 

</body> 
</html> 

ファイルpathsFile.jsは次のとおりです。

var paths = { 
    marketBoundary: "M 20 20 L 500 20 L 500 430 L 20 430 Z" 
} 

問題がある:

は、私は何をしたいのハードコードされた番号を交換ですpathsFile.jsで変数に依存するpwphがメインのHTMLファイルで定義されています。たとえば、pathsFile.jsを次のように変更した場合:

var ph = 450; 
var paths = { 
    marketBoundary: "M 20 20 L 500 20 L 500 430 L 20 " + ph-20 + " Z" 
} 

コードは引き続き機能します。しかし、これにはpathsFile.jsphを定義する必要があります。メインHTMLファイルで定義された値を読み取る方法はありますか?

お読みいただきありがとうございます。

答えて

3

はい - 複数<script>のブロックを使用します。

<script> 
    var s = 1; 
    var attrbs = {stroke: "white", "stroke-width": 2}; 
    var pw = 850; 
    var ph = 450; 
</script> 

<script src="./pathsFile.js"></script> 

<script> 
    var paper = new Raphael('figSellerBuyer', pw*s, ph*s); 
      market = paper.path(paths.marketBoundary); 
</script> 

しかし、global namespace pollutionに意識して、これは確かにクリーンアップすることができます。これの簡単な例は、最初にvar myConfig = {}と宣言してから、すべての変数をmyConfigに代入することで、トップレベルの変数が1つだけ使用されます。 (また、すべての変数をvarで明示的に宣言してください)

+0

恐ろしいですね!本当にありがとう。これはうまくいった。良い実践についての提案にも感謝します。私はJavascriptには本当に新しく、これはとても役に立ちます。 – Curious2learn

関連する問題