我正在通过
检查一些输入标签是否为空if(inputValue1.length === 0 || inputValue2.length === 0 ||
inputValue3.length === 0 || inputValue4.length === 0)
但是我的代码越多,我发现我必须检查input
标签的变量号是否为空或多次。
由于上面的代码是硬编码的,它只检查4个input
标记值,我想创建一个函数来检查条件,给出可变数量的参数(给出input
标记元素), OR运算符。例如:
checkEmptyInput(multiple_elements){}
可以传递多个和随机的参数,但仍然使用OR运算符检查条件。我无法想象我将如何完成这项功能。
答案 0 :(得分:3)
使用列表。例如,如果您的所有输入都在某个容器中(例如,form
),则可以使用querySelectorAll
将所有输入作为列表获取:
var inputs = document.querySelectorAll("selector-for-the-form input");
这会返回一个length
的集合,其中每个input
都可以通过[0]
,[1]
等获得。所以:
function checkEmptyInput(list) {
var index;
for (index = 0; index < list.length; ++index) {
if (list[0].value.length === 0) {
return true; // There's an empty one
}
}
return false; // There are no empty ones
}
答案 1 :(得分:0)
你可以尝试这样的事情。
var input1 = [1, 2]
, input2 = [1, 2]
, input3 = [2, 1];
function test(...args) {
return args.some(function(arg) {
return arg.length === 0;
});
};
var result1 = test(input1, input2, input3);
var result2 = test([], input1, input2);
console.log(result1, result2);
答案 2 :(得分:0)
您可以将所有变量传递给减少其参数的函数:
ES2015版本:
function checkEmptyInput(...multiple_elements) {
return multiple_elements.reduce((a,b) => a || b, false);
}
ES5版本:
function checkEmptyInput() {
return [].reduce.call(arguments, function(a,b) { return a || b; }, false);
}
按照描述使用
checkEmptyInput(variable1, variable2, variable3);
答案 3 :(得分:0)
0你需要一个通用的函数,可以使用任意数量的参数,并且可以返回错误:
下面的函数将采用回调和n个参数。回调函数将返回2个参数,第一个是状态true或false,第二个是消息,如果status为false。
function validateAll(callback, ...inputs){
var len = inputs.length;
for(var i=0; i < len; i++){
if(inputs[i].value.length === 0){
return callback(false, inputs[i].getAttribute('name') + 'Input not valid');
}
}
return callback(true, null);
}
validateAll(function(status, msg){
console.log(status, msg);
},input1,input2, input3);