【问题标题】:Callback - ReferenceError: Variable is not defined回调 - ReferenceError:未定义变量
【发布时间】:2020-04-14 15:01:02
【问题描述】:

我正在尝试从 URL 中获取一些参数并将它们传递给另一个函数。

获取参数的函数是这样的:

function getUrlVars(callback) {
    var urlVars = {};
    var urlparts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        urlVars[key] = value;

    });
    callback(urlVars);

}

它可以很好地获取参数。应该将 urlVars 传递给的函数如下所示:

document.addEventListener('done', function() {
    var projSelect = document.getElementById('projectSelection');
    projSelect.value = urlVars[0];
   });
});
};

我这样调用这两个函数:

window.onload=function(){
    getUrlVars(selectBox(urlVars));}

所以我要做的就是根据 URL 中的参数设置选择框的值。但我收到一个错误,告诉我“urlVars”没有定义。

坦率地说,我已经束手无策了。谁能告诉我我做错了什么?

【问题讨论】:

  • var urlVars = {};getUrlVars 内。显然,您正在调用getUrlVars(selectBox(,其中selectBox 参数是urlVars,这是未定义的,我认为这是脚本抱怨的地方,因为onLoad 回调中的urlVars 未定义并且不是隐式全局。
  • 这不是String.prototype.replace() 的用途。
  • 如果selectBox是回调函数,则不需要输入,window.onload=function(){getUrlVars(selectBox);}

标签: javascript callback scope


【解决方案1】:

您遇到的问题是,当您为window.onload 定义方法时,您传递的参数未在脚本中的任何位置定义。

此外,您似乎想将回调方法传递给urlVars,但您传递的是参数?您提供的代码很难判断。

为什么不从选择框中获取您想要的参数,然后将它们发送到所需的方法?

【讨论】:

    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    相关资源
    最近更新 更多