如果输入类型不存在,javascript无法正常工作

时间:2014-03-15 20:10:35

标签: javascript html

我有一个包含输入类型的表,例如复选框,文本如下

var inputBoxes = table_check.getElementsByTagName('input'); //modified to get only input tags present within the table 

 for(var i=0; i<5; i++) {
Nos1=parseInt(inputBoxes[i+1].value);item_row_no=1;
if(inputBoxes[i].value){alert('No Input Box');} //fails at this if clause
else{Nos2=0;}

如果表格中存在少于5个输入类型,则应该发出警报。

例外结果: No Input Box来自提醒

实际结果: <nothing thrown>如果输入类型小于5;

如果表格中只有5种输入类型,上面的脚本工作正常。

3 个答案:

答案 0 :(得分:1)

你的问题不明确。如果您只想根据输入类型的数量添加条件,您可以使用下面给出的相似内容。

var inputBoxes = table_check.getElementsByTagName('input'); //modified to get only input tags present within the table 
if(inputBoxes.length<5){
  alert('No Input Box');
}

答案 1 :(得分:1)

您应该使用i<inputBoxes.length作为条件。

for(var i=0; i<inputBoxes.length; i++) {
   Nos1=parseInt(inputBoxes[i+1].value);
   item_row_no=1;
   if(inputBoxes[i].value){
      alert('No Input Box');
   } else {
      Nos2=0;
   }
}

如果出于某种原因你想要保持i<5条件,你需要检查数组元素的存在而不是.value,你应该在控制台上遇到错误,因为你的if如何设置。使用以下内容:

if(!inputBoxes[i]){
   console.log("Input Box "+ i +" Does Not Exist");
} else {
   Nos2=0;
}

答案 2 :(得分:1)

inputBoxes是一个HTMLCollection。

将其变成array,如此:

var inputBoxes = document.getElementsByTagName('input'); 
inputBoxes = Array.prototype.slice.call(inputBoxes);

然后你可以检查inputBox是否定义为

if(inputBoxes[i] == undefined){
  alert('No Input Box');
}