我想下面的代码:的JavaScript检查多个变量为空
var var1 = "";
var var2 = "test";
var var3 = "";
vars = new Array('var1','var2','var3');
var count = 0;
for (var i = 0; i < vars.length; ++i) {
var name = vars[i];
if (field_is_empty(name)) {
count++;
}
}
console.log(count);
function field_is_empty(sValue) {
if (sValue == "" || sValue == null || sValue == "undefined")
{
return true;
}
return false;
}
这里的结果应该是count = 2
,因为两个变量都是空的,但它总是0
。我猜测它在使用if (field_is_empty(name))
时必定会出现某种情况,因为它可能不会将名称转换为实际变量的名称。
问题2#尽管如此相关
为KARTHIK甘尼申提到我已经更新了代码,它完美的作品。
现在的代码是:
var var1 = "";
var var2 = "test";
var var3 = "";
vars = new Array(var1,var2,var3);
var count = 0;
for (var i = 0; i < vars.length; ++i) {
var name = vars[i];
if (field_is_empty(name)) {
count++;
}
}
console.log(count);
function field_is_empty(sValue) {
if (sValue == "" || sValue == null || sValue == "undefined")
{
return true;
}
return false;
}
而且问题是,如果添加一个新的if语句是这样的:
if (count == '3') {
console.log('AllAreEmpty');
} else {
for (var i = 0; i < vars.length; ++i) {
var name = vars[i];
if (field_is_empty(name)) {
//Set the empty variables as "1900-01-01"
variableService.setValue(name,"test");
}
}
}
它什么都不做,我已经测试使用variableService.setValue('var1',"test")
,它作品。
PS:variableService.setValue是一个由软件控制的函数,我不知道它究竟干了什么,我知道如果像上面提到的那样使用它,它就会起作用。
这是因为你没有传递每个变量的内容,而是它的名字。例如,你正在做'field_is_empty('var1')',而不是'field_is_empty(“”)'。你只需要从你的数组中删除引号。 – Santi
你没有正确地把你的变量放到你的数组中。仔细看看你在做什么,这是一个变量名称的字符串,而不是变量本身。删除初学者的报价。 – Slime
使用:'vars = new Array(var1,var2,var3);'。 –