用for循环检查所有元素是否满足条件

用for循环检查所有元素是否满足条件

本文介绍了用for循环检查所有元素是否满足条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我基本上尝试使用以下代码检查所有输入字段是否有效:

I basically try to check if all input fields are valid by using the following code:

 addData (input){

   var isValid = false;

   for (var i = 0, ii = input.length; i < ii; ++i) {

      if ($('#' + input[i].id).hasClass('valid')) {
          isValid = true;
      }
   }

   if (isValid) {
     //do stuff
   }
 }

总共 input.length 是 3,我想检查所有 3 个输入字段是否都有效.在我的示例中,它只检查最后一个输入元素.在相关帖子中,我找不到解决方法带有 for 循环.有人可以帮忙吗?

In total the input.length is 3 and I want to check if all 3 input fields are valid. In my example, it just checks the last input element. In related posts, I couldn`t find a way to solve it with a for-loop. Can anybody help?

感谢所有有用的答案:最后,我调整了 Máté Safranka 的答案:

var isValid = input.toArray().every(element => $('#' + element.id).hasClass('valid'))

使用 .toArray() 将 jQuery 对象转换为 Array >> 见在这里了解更多信息.定义 truefalse 不是不再需要.

with .toArray() to convert jQuery object to an Array >> see here for more information. Defining true or false is not needed anylonger.

推荐答案

您永远不要将 isValid 设置为 false,因此只要至少有一个输入有效,结果就会有效.

You never set isValid to false, so as long as at least one of the inputs is valid the result will be valid.

最好交换真/假并检查任何无效的,例如:

Better to swap the true/false and check for any invalid ones, eg:

addData (input){

 var isValid = true;

 for (var i = 0, ii = input.length; i < ii; ++i) {
   if (!$('#' + input[i].id).hasClass('valid')) {
      isValid = false;
   }
 }

 if (isValid) {
  //do stuff
 }
}

注意:有使用循环的替代方法,但这是为了回答在 OP 问题中修复循环的明确问题.


Note: there are alternatives to using a loop, but this is to answer the explicit question of fixing the loop in OPs question.

这篇关于用for循环检查所有元素是否满足条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-25 13:32