Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何引用表格单元格中的输入值进行循环验证?_Javascript_Html - Fatal编程技术网

Javascript 如何引用表格单元格中的输入值进行循环验证?

Javascript 如何引用表格单元格中的输入值进行循环验证?,javascript,html,Javascript,Html,我有一个HTML表,其中包含重复的输入行,如下所示: <table id="tableInput"> <thead> <tr> <th>Col 1</th> <th>Col 2</th> </tr> </thead> <tbody id='abc'> <tr> <td><input id="item

我有一个HTML表,其中包含重复的输入行,如下所示:

<table id="tableInput">
  <thead>
  <tr>
    <th>Col 1</th>
    <th>Col 2</th>
  </tr>
  </thead>

  <tbody id='abc'>
  <tr>
    <td><input id="itemid" name="itemid"  type="text" size="20" /></td>
    <td>Col2 desc</td>
  </tr>
  <tr>
    <td><input id="itemid" name="itemid"  type="text" size="20" /></td>
    <td>Col2 desc</td>
  </tr>
  </tbody>
</table>
如何在验证循环中引用输入id?比如:

i=0;
while i < document.getElementById("tableInput").tBodies.length {
  x = document.getElementById("tableInput").tBodies[i].input.value);
  if x = "" {
      errorMsg = 1;
  }
 i++;
 }
var ipts = document.getElementsByTagName('input'), inVals = [], errors = [];
for(var i=0,l=ipts.length; i<l; i++){
  var ip = ipts[i];
  if(ip.type === 'text'){
    inVals.push(ip.value);
  }
}
for(var i in inVals){
  if(inVals[i] === ''){
    errors[i] = 'required error';
  }
}

元素的ID必须是唯一的

<input id="itemid" name="itemid"  type="text" size="20" />
因此,在每一行中,您都希望itemid具有不同的值。第二,检查你的陈述是否正确。缺少括号,您将一个值赋给x,而不是比较它


对于循环,您可以使用getElementByTagName,请参见vsync的答案。Felix说的是真的,id必须是唯一的。如果不使用,也可以将其删除

但是尝试在tableInput中的所有输入上循环


也许你应该试试这样:

i=0;
while i < document.getElementById("tableInput").tBodies.length {
  x = document.getElementById("tableInput").tBodies[i].input.value);
  if x = "" {
      errorMsg = 1;
  }
 i++;
 }
var ipts = document.getElementsByTagName('input'), inVals = [], errors = [];
for(var i=0,l=ipts.length; i<l; i++){
  var ip = ipts[i];
  if(ip.type === 'text'){
    inVals.push(ip.value);
  }
}
for(var i in inVals){
  if(inVals[i] === ''){
    errors[i] = 'required error';
  }
}

如果inVals[4]为空,则错误[4]将包含“必需错误”。无论如何,这就是逻辑。

不清楚你想做什么。您可以使用窗体的集合获取窗体中的所有控件,例如

var form = document.getElementById('tableInput');
var controls = form.elements;
for (var i=0, iLen=controls.length; i<iLen; i++) {

  // do stuff with controls[i]

  // to do stuff with just input elements
  if (controls[i].tagName.toLowerCase() == 'input') {
    console.log(controls[i].name);
  }

  // and so on…

}
如上所述,元素ID应该是唯一的,但如果它们不是唯一的,则不会发生任何变化。它只是让getElementById有点无用。但是表单控件应该很少需要id,因为它们必须有一个成功的名称,并且可以通过该名称访问


请注意,无论文档的结构如何,不管某些控件是否在表中,或者即使控件实际上在表单中,只要它们使用属性与表单关联,上述操作都有效。表单中的控件的form属性自动设置为它们所在的表单。

每个控件的id属性都应该是唯一的。这是伪代码还是方言,还是您忘记了。。。围绕这些条件?FormElement.elements集合将包含一个类似数组的对象,如果您正在使用它,则可以在其中循环所有输入,而无需id。另一个解决方案可以是document.getElementsByTagName'input'。@PHPglue-他在这里没有表单元素,这并不是那么简单。