簡體   English   中英

如何使用 JavaScript 將變量從一個函數傳遞到另一個函數

[英]How to pass variable from one function to another, both with parameters using JavaScript

我們有幾個帶有號召性用語按鈕的登陸頁面(例如“下載報告”),並且需要通過 URL 字符串報告實際按鈕點擊中的兩個變量(報告標題和報告類型以及點擊的訪問者是否按鈕是新客戶或現有客戶。分析公司要求發送最終 URL,如下所示:

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

為了收集資產名稱和資產類型,我創建了這個函數,它已經投入生產並且可以很好地報告資產名稱和資產類型。

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(“新”或“當前”),然后使用 cStatus 函數獲取有關按鈕單擊的信息。 該按鈕有一個傳遞“資產名稱”和“資產類型”的 onclick:

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

我遇到的問題是將所有三個變量都放入一個函數中,因此我可以創建用於報告的 URL 字符串。 我已經搜索並找到了無參數函數的解決方案,但無法弄清楚如何將變量從一個參數為“function cStatus(elem)”的函數傳遞給另一個參數為“tracker(assetName, assetType)”的函數,以便它可以最終在 URL 字符串中傳遞以進行報告。

你的問題沒有多大意義,不過,我猜你需要一個全局變量,這是一個例子:

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

然后像這樣獲取全局變量:

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

另一種選擇是在函數范圍之外分配變量,使其也是全局的。

var myvar = "bla";
    
function func1(){
    myvar = "something";
}
     
function func2(){
    alert(myvar);
}

func2myvar的值現在something


最后,通過在聲明之前為其分配一個值,使您的變量Automatically Global變量。

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

以上將使myvar成為全局變量,即使它是在函數內部執行的。

詳細了解JavaScript 中的作用域

您可以從另一個傳遞參數的函數中調用一個函數。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM