如何在javascript中将变量传输到外部js文件?

如何在javascript中将变量传输到外部js文件?,javascript,jquery,Javascript,Jquery,案例1:我已将一个变量传递给外部js文件,如下所示 <script type="text/javascript"> var data1, data2, data3, data4; function plotGraph() { var oHead1 = document.getElementsByTagName('HEAD').item(0); var paramScript = document.createElement("script"); param

案例1:我已将一个变量传递给外部js文件,如下所示

<script type="text/javascript">

var data1, data2, data3, data4;

function plotGraph() {
    var oHead1 = document.getElementsByTagName('HEAD').item(0);
    var paramScript = document.createElement("script");
    paramScript.type = "text/javascript";
    paramScript.setAttribute('data1', data1);
    paramScript.setAttribute('data2', data2);
    paramScript.setAttribute('data3', data3);
    paramScript.setAttribute('data4', data4);
    oHead1.appendChild(paramScript);
    var oHead = document.getElementsByTagName('HEAD').item(0);
    var oScript = document.createElement("script");
    oScript.type = "text/javascript";
    oScript.src = "js/graph.js";
    oHead.appendChild(oScript);
}
</script>

变量data1、data2、data3、data4;
函数绘图仪(){
var oHead1=document.getElementsByTagName('HEAD')。项(0);
var paramScript=document.createElement(“脚本”);
paramScript.type=“text/javascript”;
paramScript.setAttribute('data1',data1);
paramScript.setAttribute('data2',data2);
paramScript.setAttribute('data3',data3);
paramScript.setAttribute('data4',data4);
oHead1.appendChild(paramScript);
var oHead=document.getElementsByTagName('HEAD')。项(0);
var oScript=document.createElement(“脚本”);
oScript.type=“text/javascript”;
oScript.src=“js/graph.js”;
oHead.appendChild(oScript);
}
案例2:我甚至尝试使用jquery像这样传递它

<script type="text/javascript">   

    function plotGraph() {
        var data1, data2, data3, data4;
        $.getScript("js/graph.js");
    }
</script>

函数绘图仪(){
变量data1、data2、data3、data4;
$.getScript(“js/graph.js”);
}
在第一种情况下,这是工作,但我必须创建全局变量…我不希望这个

在第二种情况下,不起作用的具有js文件中无法识别的局部变量


我该怎么做?任何建议?

变量只有在以下情况下才能在单独的脚本之间共享:

  • 全局变量
  • 如果它们在某种程度上处于相同的上下文中(对于多个外部脚本来说很难)
  • 如果您在一个模块中提供了一个返回变量访问权限的函数
  • 如果调用其他脚本并将变量或变量引用传递给其他脚本

  • 编辑:既然OP已经解释了他们真正想要做的事情(通过外部脚本将ajax调用的数据传递给函数),那么这个问题的真正答案是:

    您应该从ajax调用的成功处理程序调用外部脚本中的全局函数,并将这些数据元素传递给该函数。然后,外部脚本中的函数可以立即对数据执行操作,也可以将数据保存在自己的变量中供以后使用


    仅供参考:
    $.getScript()
    在全局级别加载脚本。这就是为什么你的案例2不起作用

    共享对一组变量的访问的一种方法是将它们全部作为对象的属性,然后使该对象成为全局对象,或者提供一个全局函数来检索对该对象的访问。例如,可以声明具有多个属性的单个全局对象

    var myConfigObject = {
        data1: value1,
        data2: value2,
        data3: value3,
        data4: value4
    };
    

    要在外部脚本文件中调用函数,请执行以下操作:

  • 在外部脚本文件中定义全局可访问的函数。让我们称之为
    doIt(a,b,c,d)
    ——一个包含四个参数的函数
  • 然后,在ajax调用中,如果有可用的数据值,只需调用
    doIt()
    ,并将所需的数据值
    doIt(3,“foo”,data4,随便什么)
  • 然后,在
    doIt(a,b,c,d)
    的实现中,您可以使用传递给它的这四个数据值
  • 因此,在您的外部文件中,您有:

    function doIt(a, b, c, d) {
        // do whatever doIt wants to do
        // use the arguments passed to this function
    }
    
    在主index.html文件中,您将有一个ajax调用:

    $.ajax(..., function(data) {
        // process the returned data from the ajax call
        // call doIt
        doIt(3, "foo", data4, whatever);
    
    });
    

    只有在以下情况下,变量才能在单独的脚本之间共享:

  • 全局变量
  • 如果它们在某种程度上处于相同的上下文中(对于多个外部脚本来说很难)
  • 如果您在一个模块中提供了一个返回变量访问权限的函数
  • 如果调用其他脚本并将变量或变量引用传递给其他脚本

  • 编辑:既然OP已经解释了他们真正想要做的事情(通过外部脚本将ajax调用的数据传递给函数),那么这个问题的真正答案是:

    您应该从ajax调用的成功处理程序调用外部脚本中的全局函数,并将这些数据元素传递给该函数。然后,外部脚本中的函数可以立即对数据执行操作,也可以将数据保存在自己的变量中供以后使用


    仅供参考:
    $.getScript()
    在全局级别加载脚本。这就是为什么你的案例2不起作用

    共享对一组变量的访问的一种方法是将它们全部作为对象的属性,然后使该对象成为全局对象,或者提供一个全局函数来检索对该对象的访问。例如,可以声明具有多个属性的单个全局对象

    var myConfigObject = {
        data1: value1,
        data2: value2,
        data3: value3,
        data4: value4
    };
    

    要在外部脚本文件中调用函数,请执行以下操作:

  • 在外部脚本文件中定义全局可访问的函数。让我们称之为
    doIt(a,b,c,d)
    ——一个包含四个参数的函数
  • 然后,在ajax调用中,如果有可用的数据值,只需调用
    doIt()
    ,并将所需的数据值
    doIt(3,“foo”,data4,随便什么)
  • 然后,在
    doIt(a,b,c,d)
    的实现中,您可以使用传递给它的这四个数据值
  • 因此,在您的外部文件中,您有:

    function doIt(a, b, c, d) {
        // do whatever doIt wants to do
        // use the arguments passed to this function
    }
    
    在主index.html文件中,您将有一个ajax调用:

    $.ajax(..., function(data) {
        // process the returned data from the ajax call
        // call doIt
        doIt(3, "foo", data4, whatever);
    
    });
    

    执行
    paramScript.setAttribute('data1',data1)的代码etc是不必要的。这只是意味着,在HTML中,代码段生成的代码看起来像是执行
    paramScript.setAttribute('data1',data1)的代码etc是不必要的。这只是意味着在代码片段生成的HTML中看起来像
    ,我不知道为什么需要这样做,从一开始就包括graph.js,然后用变量调用一个函数。嗨@Esailija,我正在做一个ajax调用,以获取一些数据到这个数据变量,然后我将它获取到这个函数中…我是否可以用其他方式来做?我不知道你为什么需要这样做,只需从一开始就包含graph.js并从