gpt4 book ai didi

带有 jquery.push 的 Javascript 全局数组在备用函数中返回空数组

转载 作者:行者123 更新时间:2023-11-28 20:56:51 26 4
gpt4 key购买 nike

我在函数之外声明一个变量,如下所示:

var vitalsValuesChecked = [];

然后在我执行的函数内部:

vitalsValuesChecked.push('foobar');

在后面的函数中,我需要循环遍历数组以获取推送的项目,但始终得不到我期望的结果。因此,在同一函数中,我添加了 console.log(vitalsValuesChecked); ,它返回 []

编辑下面的代码示例;编辑2修复了下面的代码

var vitalsValuesChecked = [];

$(document).delegate("#hv-byresult-btn", "click", function () {
var vitalsTypeList = ['bp', 'ht', 'wt', 'pulse', 'resp', 'temp'];
vitalsValuesChecked = [];
for (var i = 0;i < vitalsTypeList.length;i++) {
if (document.getElementById(vitalsTypeList[i]).checked == true) {
vitalsValuesChecked.push(vitalsTypeList[i]);
console.log(vitalsTypeList[i] + " is checked. Adding to global array");
}
}
$('#vitals-measures-content').empty();
navigate("#vitals-measures");
for (var i = 0;i < vitalsValuesChecked.length;i++) {
console.log("vitalsValuesChecked at index " + i + " is " + vitalsValuesChecked[i]);
}
readRec('clinicalObservation', null, sortVitalsByResult);

});
function foobar() {
console.log(vitalsValuesChecked); //return []
for (var i=0;i < vitalsValuesChecked.length;i++) {
var valueSelected = vitalsValuesChecked[i];
console.log("Value of vitalsValuesChecked at index " + i + " is " + vitalsValuesChecked[i]);
}
}

最佳答案

您已定义 vitalsValuesChecked 两次,这是一个问题。一种是全局的,一种是 delegate() 回调的本地的。局部定义会覆盖全局定义,因此当您认为正在将值设置到全局变量中时,实际上并非如此 - 您只是更改了具有有限生命周期的局部变量,因此您的数据稍后在全局变量中不可用。

您应该删除

var vitalsValuesChecked = [];

在委托(delegate)处理程序内部,因此所有修改都发生在单个全局变量上。

关于带有 jquery.push 的 Javascript 全局数组在备用函数中返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com