0

出于某种原因(我不打算在这里说明原因)我需要使用 javascript 来获取 12 个隐藏输入字段的值并为每个值设置一个变量。

我不确定最好的方法是什么。我希望能够获取这些值,如果没有创建它们,即输入字段不存在,那么 id 会产生错误。

使用 try / catch 会对此有好处,还是我应该简单地使用 typeof 来检查变量是否已创建?

将它们也放入一个数组中以便我可以循环检查它们的存在是一个好主意吗?

谢谢

4

3 回答 3

2

这是做这件事的简单方法。try-catch 相当重。另外,你会把错误扔到哪里?与其在错误中展开你的流程,不如将你的错误收集到一个结构良好的响应中。这样,如果您的第一个丢失了,但另一个 X 没有,那么您仍然可以完成一些工作。

if ( typeof( something ) !== "undefined" ) { doStuff(); }

否则,我需要更多信息来帮助您解决问题。

于 2012-04-10T20:01:19.227 回答
0
if(document.getElementById("someID")){
// add the value since the input exists
}
else{
// skip or use default - and inform if need be
}

示例实现:http: //jsfiddle.net/zVz6h/1/

代码:

 function getValueArray(idArray){
var valArray = [];
for(var i=0;i<idArray.length;i++){    
    if(document.getElementById(idArray[i])){
    valArray.push(document.getElementById(idArray[i]).value);       
    }
    else{
    valArray.push("not defined");
    }
}
    return valArray;

}

var txtIDs = ["txt1","txt2","txt3","txt4","txt5","txt6","txt7","txt8"];


alert(getValueArray(txtIDs));
于 2012-04-10T19:58:50.520 回答
0

这是一个简单的函数,它将检查页面上是否包含 12 个输入元素。如果您需要检查单个输入元素是否存在,请提供更多信息。

  function SaveInputValues() {

    var inps = document.getElementsByTagName('input');
    if (inps.length !== 12) {
      return alert("There must be exactly 12 input elements. You have included " + inps.length + ".");
    }
    var vals = [];
    for (i = 0; i < inps.length; i++) vals.push(inps[i].value);
    inps = null; // provides closure
  }
于 2012-04-10T20:06:49.223 回答