访问正在改变函数内部的变量(jQuery)
Accessing Variable that's altering inside function (jQuery)
我正在尝试访问我在函数中设置的变量。我需要在函数之外访问它。我尝试先在函数外部设置变量,然后从函数内部更改它,但这似乎不起作用。这是我的代码:
location_var =""; //i've tried both location_var and var location_var here
$.getJSON('/v/js/round.js', function(data) {
var location_var = "location.pathname.indexOf('/product-p/test-product.htm')"
for(i=0; i<data.records.length-1; i++){
var location_var = location_var + " || location.pathname.indexOf('" + data.records[i].productcode + "')";
}
});
console.log(location_var);
注销时我只是得到一个空字符串。当我从 JSON 函数中注销它时,我得到了正确的值。我基本上只是循环访问 JSON 文件并打印出值。
我也尝试了答案在这里所说的(如何在jQuery中存储全局值(不一定是全局变量?),但尝试以$.getJSON.location_var的形式访问变量,但这也没有用。
感谢您的帮助!
你的代码有两个问题。
首先 - location_var
的范围是内部功能。例如:
var foo = 1;
(function(){
var foo = 2;
})();
alert(foo); // alerts '1'
第二个var
创建一个作用域为函数的新变量,而 alert
语句查看附加到外部作用域的foo
变量。
您可以通过删除内部var
来解决此问题 - 但这是一个污染全局范围的混乱解决方案 - 并且由于代码中的另一个错误而不起作用:
getJSON
调用是异步的 - 即发送远程请求,然后执行其他代码,然后在收到响应时执行回调函数。换句话说,在记录值时,尚未收到响应。
您需要确保从回调调用依赖于新值 location_var
的任何代码,例如:
$.getJSON('/v/js/round.js', function(data) {
...code...
console.log(location_var);
});
试试这个:
$.getJSON('/v/js/round.js', function(data) {
window.location_var = "location.pathname.indexOf('/product-p/test-product.htm')"
for(i=0; i<data.records.length-1; i++){
location_var = location_var + " || location.pathname.indexOf('" + data.records[i].productcode + "')";
}
console.log(location_var);
});
相关文章:
- 值未传递给变量(JQuery、Javascript)
- 附加要使用的变量jQuery验证插件
- 按钮变量范围 - 如何更新父范围中的变量?jQuery.
- grunt-contrib-jasmine ReferenceError: 找不到变量: jQuery.
- 未定义的变量 jQuery 对象
- 调用变量 jQuery 函数
- 访问正在改变函数内部的变量(jQuery)
- 在变量jquery日期选择器中获取今天的日期和所选日期
- 如何序列化存储在变量 jQuery 中的表单
- 如何在单独的函数中获取此变量?(jQuery)
- 可以't在嵌套函数中使用javascript变量(jquery砖石插件)
- 将.attr()添加到变量Jquery中
- 将.change函数中变量的值传递并更新到全局变量Jquery
- 将ajax变量Jquery到php中
- 用两个双引号和加号包围javascript变量jquery $.post
- 如何将html结构存储在变量jquery中
- 如何通过名称空间变量进入点击函数参数变量?jQuery
- 检查if条件,if语句被赋值为字符串变量- jquery|| javascript
- 从on()函数返回变量- jquery
- 创建一个变量,在每个循环中使用一个变量- jQuery