2012-05-07 75 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