2012-05-07 102 views
1

我正在尋找一種在外部.js文件中發佈變量的方法。將變量添加到.js文件

喜歡的東西:

<script type="text/javascript" src="/js/script-starter.js?var=value"></script> 

然後我想打電話VAR(因而,值)。這有可能以任何方式?

謝謝!

回答

8

是的,這是可能的。您將必須使用document.getElementsByTagName函數在DOM中查找所有script標記(確保DOM已加載,然後再嘗試查看它),循環遍歷結果列表,查找相應的腳本並解析src屬性以便提取你正在尋找的價值。

東西線沿線的:

var scripts = ​document.getElementsByTagName('script'); 
​for (var i = 0; i < scripts.length; i++)​ { 
    var src = scripts[i].src; 
    // Now that you know the src you could test whether this is the script 
    // that you are looking for (i.e. does it contain the script-starter.js string) 
    // and if it does parse it. 
}​ 

至於src屬性的分析而言,並提取其查詢字符串值,您可以使用following function

+3

哇,+1。我正想說這是不可能的。 –

+0

@Darin Dimitrov - >好吧,我認爲你誤以爲一個初學JavaScript程序員的基本問題是關於一些複雜的東西。我想他只是問,「如果他有一個函數foo(x,y)在JS文件fooFile.js中定義,那麼他如何在他的代碼中調用foo(5,7)。」所以 - >這是一個非常基本的問題,VisioN給出了一個基本的正確答案。 –

+0

@SarveshKumarSingh,我沒有看到任何複雜的答案。這是非常基本的JavaScript和DOM操作。這是任何JavaScript開發人員在進一步學習之前應該學習的第一件事情之一。 –

2

如果腳本是接收查詢字符串變量中的服務器端腳本,並返回一個JavaScript代碼作爲輸出,便有可能

1

如何腳本文件加載之前聲明變量:

<script type="text/javascript">var myVar = "Value"</script> 
<script type="text/javascript" src="/js/script-starter.js"></script> 

所以你可以在腳本中使用這個變量。可能這是最簡單的方法之一。

+0

是的,這是我的第一選擇,但我真的很喜歡我的JavaScript和HTML分離..對我的客戶非常重要(不能告訴他這是不值得的麻煩).. – Lourens

+0

那麼,你仍然可以單獨的HTML和JS,但使用在主頁面聲明的全局變量是非常正常的。 – VisioN

0

你爲什麼不把這些變量中隱藏一個或P

<a id="myHiddenVar" style="display:none;">variables</a> 

然後在你的.js你

var obj = document.getElementById("myHiddenVar").innerHTML; 

或jQuery的風格訪問

var obj = $("#myHiddenVar").text(); 
0
function getJSPassedVars(script_name, varName) { 
    var scripts = $('script'), 
     res = null; 

    $.each(scripts, function() { 
     var src = this.src; 
     if(src.indexOf(script_name) >= 0) { 
      varName = varName.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
      var string = new RegExp("[\\?&]"+ varName +"=([^&#]*)"), 
       args = string.exec(src); 
      if(!args.length) { 
       res = null; 
      } else { 
       res = args[1]; 
      } 
     } 
    }); 
    return res; 
} 

console.log(getJSPassedVars('script-starter.js', 'var')); 

在我的情況下我的應用程序的文件夾結構是像以下:

MyApp/ 
    index.html 
    jquery.js 
    my.js 

上述功能是內my.jsconsole.log和包括它內index.html