javascript - 全局变量不通过函数更新
问题描述
使用给定的代码 -
var videowallwidth;
var videowallheight;
function getPositions() {
$.ajax({
url: 'https://' + ipaddress + ':46272/NetAPICmd?Command=Output',
type: 'get',
data: '[]',
dataType: 'jsonp',
success: function (response1) {
var msg1 = response1.Result;
var testarray1 = msg1.split("\r\n");
for (var i = 1; i <= testarray1.length - 1; i++) {
var res = testarray1[i].split(':');
var newRes = res;
if (newRes[0] == "TotalSize") {
var ressplit = newRes[1].split('x');
videowallwidth = ressplit[0].trim();
videowallheight = ressplit[1].trim();
}
}
}
});
}
console.log(videowallwidth);
我已将videowallwidth
和定义videowallheight
为全局变量并在getPositions()
函数内部设置它们的值,当我控制台记录函数内部的变量时,它们看起来很好并且具有正确的值。但是当我在他们显示的函数之外调用它们时"undefined"
,这意味着它们的值没有全局更新......我该如何解决这个问题?
解决方案
您可能希望在窗口对象中插入全局变量,如下所示:
window.videowallwidth = null; //initialize as you please
window.videowallheight = null; //initialize as you please
像这样,您应该确保它们在任何地方都可以访问
注意 ajax,这些函数是异步的,所以你应该使用回调/承诺等来管理“流”
推荐阅读
- pandas - pandas 根据不同行中的值对特定行求和
- python - Python Regex:查找不重复的模式
- sqlite - sqlite3 TypeError:'url'是一个无效的关键字
- javascript - 为什么我的外部 jQuery 文件不能应用于 ReactJs 中的 className?
- c# - 如何通过搜索引擎链接发送应用网络请求?
- javascript - 使用 window.print() 打印类似网格的数据时如何避免边距?
- javascript - 无法从 Google 图表日期中删除 AM PM 格式
- c - 在 C 中的链表实现中打印额外的 0 并且不删除前端节点
- aws-lambda - 使用 cdk not sam 在本地调试 lambda
- angular - Angular Loop 使用指令和访问模型值