【问题标题】:Javascript passing argument to function that is a callbackJavascript将参数传递给作为回调的函数
【发布时间】:2016-07-26 17:45:34
【问题描述】:

我有一个函数,它接受一个名为 buttonID 的参数,我需要将它传递给多个其他函数。当点击链接时,ID 将被传递。

 <a href="#" class="theme_btn" id="check-user" onClick="javascript:checkUser(this.id);">User Check</a>

我的功能是

function checkUser(buttonID) { 
 //do some stuff
 var data = {};
 data.callback = getUserInfo;
 data.username = uname;
 data.level = lvl;
 checkLevel(data);
 }

我遇到的问题是我无法将 buttonID 传递给回调函数 getUserInfo。

我已经尝试过 getUserInfo(buttonID) 但它不能正常工作。我应该使用 getUserInfo({buttonID]) 的以下语法吗?

简而言之,我需要将 buttonID 的值从一个函数传递到另一个函数,我相信这是阻碍我前进的语法。关于我可以尝试不同的方法有什么想法或建议吗?

【问题讨论】:

  • 添加data.buttonId = buttonID;

标签: javascript jquery arrays json callback


【解决方案1】:

你可以使用bind:

function checkUser(buttonID) { 
 //do some stuff
 var data = {};
 data.callback = getUserInfo.bind(null, buttonID);
 data.username = uname;
 data.level = lvl;
 checkLevel(data);
}

更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

【讨论】:

    【解决方案2】:

    您可以使用匿名函数来做到这一点:

    data.callback = function(){getUserInfo(buttonID)}
    

    使用 JavaScript ES6 语法,稍微短一点:

    data.callback = _=>{getUserInfo(buttonID)}
    

    【讨论】:

      【解决方案3】:

      var buttonIDGlobal;
      
      function checkUser(buttonID) { 
      
       buttonIDGlobal = buttonID;
       //do some stuff
       var data = {};
       data.callback = getUserInfo;
       data.username = uname;
       data.level = lvl;
       checkLevel(data);
       }
      You can simple define a global variable and assign the button ID to that variable. 
      
      
      Now "buttonIDGlobal" is accessible in "getUserInfo()" function.`enter code here`

      【讨论】:

        猜你喜欢
        • 2011-03-28
        • 2011-10-05
        • 1970-01-01
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多