带有jquery .push的Javascript全局数组在备用函数中返回空数组
Javascript global array with jquery .push returns empty array in alternate function
我在函数之外声明了一个变量,如下所示:
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 = [];
在委托处理程序中,以便所有修改都发生在单个全局变量上。
函数内部的var vitalsValuesChecked = [];
将创建一个局部变量。 如果您尝试推送到全局变量,我认为您不希望这样做。
相关文章:
- 数组函数不适用于从元素文本创建的JavaScript数组
- 如何在javascript中求解pack数组函数
- 制作一个javascript的数组函数
- 获取元素的位置并创建它的数组函数
- 茉莉花中的 SpyOn javascript 数组函数
- 自定义数组函数不接受参数
- 使用原型的自定义数组函数.新的 MyArray(1,2,3,4) 不工作
- Java 脚本随机化数组函数
- 在 Restangular 集合上使用 lodash 数组函数
- 比较数组函数返回未定义
- Javascript中嵌套for循环与数组函数的性能
- 多维数组函数在JS中不起作用
- Javascript数组函数有我看不到的错误
- 数组函数外的javascript
- 在数组/函数中循环时使用换行符
- 拼接javascript数组函数获胜't删除项目
- 为什么不'这个js数组函数不能工作
- 如何在我自己的数组原型函数中使用数组函数
- 在javascript中定义数组函数
- Jquery动态树数组函数