如何使用JavaScript将参数从一个函数传递到另一个函数

时间:2015-04-16 22:28:19

标签: javascript jquery

我们有几个带有号召性用语按钮的着陆页(例如“下载报告”),需要通过URL字符串报告实际按钮点击中的两个变量(报告标题和报告类型以及访问者是否点击该按钮的是新客户或现有客户。分析公司要求最终的URL发送方式如下:

https://thisurl.html?assetName=" + assetName + "&assetType=" + assetType + "&custType=" + custType);

为了收集assetName和assetType,我创建了这个函数,该函数已经在生产中,可以正常报告assetName和assetType。

function tracker(assetName,assetType) {
  var fileref=document.createElement('script');
  fileref.setAttribute("type","text/javascript");
  fileref.setAttribute("src", "https://thisurl.html?assetName=" + assetName + "&assetType=" + assetType + "&custType=" + custType);
  if (typeof fileref!="undefined") {        
    document.getElementsByTagName("head")[0].appendChild(fileref);
  }

}

现在,我们还需要跟踪客户端是“新”还是“当前”,所以我有这个功能:

function cStatus(elem) {
    var els = [];
    while (elem) {
        els.unshift(elem);
        elem = elem.parentNode;
        if (elem.id == "new") {
            break;
        } else if (elem.id == "current") {
            break;
        }
    }
    custType = elem.id;
}

为了澄清,号召性用语按钮包含在页面上两次,一次在“新”div中,另一次在“当前”div中。

<div id="new">
...button code...
</div>

<div id="current">
...button code...
</div>

为了创建用于报告的URL字符串,我的想法是使用“cStatus”函数来识别div id('new'或'current'),然后使用cStatus函数获取按钮上的信息单击。该按钮有一个onclick,它传递'assetName'和'assetType':

onclick="tracker('PDF','document.pdf')

我遇到的问题是将所有这三个变量都集成到一个函数中,因此我可以创建用于报告的URL字符串。我已经搜索并找到了没有参数的函数的解决方案,但是无法弄清楚如何将参数“function cStatus(elem)”的变量从一个函数传递给另一个参数为“tracker(assetName,assetType)”的函数,这样就可以了最终会在URL字符串中传递以进行报告。

2 个答案:

答案 0 :(得分:2)

你的问题没有多大意义,我猜你需要一个全局变量,这里有一个例子:

function func1(){
window.myvar = "something";
}

然后像这样得到你的全局变量:

function func2(){
var newvar = window.myvar + "append something";
}

另一个选择是将变量分配到函数范围之外,使其也是全局的。

var myvar = "bla";

function func1(){
myvar = "something";
}

function func2(){
alert(myvar);
}

myvar内的func2现在为something


最后,通过在声明之前为其赋值来创建变量Automatically Global

function func1(){
myvar = "something";
}

以上将使myvar成为全局变量,即使它是在函数内执行的。

详细了解Scopes in JavaScript

答案 1 :(得分:1)

你可以从另一个函数调用一个函数传递参数。

function func1(param2){
  //do stuff with param2
}

function func2(param1){
   func1(param1);
}