如果javascript nodelist的内容全部为空或者全部都有值,如何查看javascript nodelist?

时间:2017-02-08 11:54:10

标签: javascript arrays nodelist

我对javascript很新,看着在ID的末尾检查一些带有动态ID的字段,看看他们是否在所有字段中都输入了值,或者根本没有输入任何值。不应允许用户仅在其中一些中输入值并将其他人留空。

我写了下面的内容,但是我觉得必须有更好的方法吗?

var x = document.querySelectorAll('[id^="entryField"]');

for (var i = 0; i < x.length; ++i) {
   if (x[i].value == "") {
      for (var i = 0; i < x.length; ++i) {
         if (x[i].value != "") {
            alert("Please enter a value");
         }
      }
   }
}

3 个答案:

答案 0 :(得分:1)

一个循环应该与空(或填充)字段的计数器一起使用。如果计数器不为零且没有对象的长度,则某些字段具有值。

// Import Jenkins
import jenkins.model.Jenkins;
// Get Jenkins instance
def j = Jenkins.getInstance();
// Get the job we wan't to trigger
def job = j.getItem("B");
// Finally we schedule a new build which starts directly (the zero in the argument)
job.scheduleBuild2(0)

答案 1 :(得分:1)

这将是一个更简单的版本:

  var x = document.querySelectorAll('[id^="entryField"]');

  const inputs = Array.from(x);
  const allInput = inputs.every(input => {
    return (input.value != "");
  });
  const allEmpty = inputs.every(input => {
    return (input.value == "");
  });

  if (allInput || allEmpty) {
      alert('xxxxxx');
  }

ES5实施:

  var x = document.querySelectorAll('[id^="entryField"]');

  var inputs = Array.from(x);
  var allInput = inputs.every(function(input) {
    return (input.value != "");
  });

  var allEmpty = inputs.every(function(input) {
    return (input.value == "");
  });


  if (allInput || allEmpty) {
      alert('xxxxxx');
  }

编辑:支持allInput或allEmpty。一开始就被忽视了。

答案 2 :(得分:0)

你可以检查两个every个调用,如果所有元素都被填充或没有填充任何元素,则下面的结果为真 - 其他每个情况都是假的:

var x = document.querySelectorAll('[id^="entryField"]');

var allowed = function allOrNone(elements) {
  return Array.prototype.every.call(x, function(v) {
    return v.value && v.value != "";
  }) || Array.prototype.every.call(x, function(v) {
    return !v.value || v.value == "";
  });
}

console.log(allowed(x));
<input id="entryFieldFoo">
<input id="entryFieldBar">