2012-04-10 69 views
0

由于某种原因或其他原因,我需要使用javascript来获取12个隐藏输入字段的值并为每个值设置一个变量。在声明变量时使用try catch

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

会使用一个try/catch是否适合这个,或者我应该简单地使用typeof来检查已创建的变量?

会把它们放在一个数组中,所以我可以循环检查它们的存在是个好主意吗?

感谢

+1

向我们展示一些代码,以便我们从那里开始。 – 2012-04-10 19:44:54

+0

对我来说似乎是所有这些都是矫枉过正的。如果你想抛出一个错误,为什么要检查呢?让错误发生在何处/何时使用。或者,如果你想立即提出错误,你可以使用if(!x)抛出新的错误(...) – ControlAltDel 2012-04-10 19:49:51

+0

谢谢我现在没有任何代码,我纯粹想讨论最好的方法。 – Lee 2012-04-10 20:05:57

回答

1

这是做它的简单方法。尝试抓住相当沉重。另外,你会在哪里抛出错误?不要错误地解开流程,将错误收集到结构良好的响应中。这样,如果你的第一个失踪,但其他X不是,那么你仍然可以完成一些工作。

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

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

+0

谢谢克里斯,我需要设置它,所以如果任何变量缺少,然后输出一个错误,即在屏幕上放置一些文本,说有错误 – Lee 2012-04-10 20:08:57

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)); 
+0

获取值并将它们放在数组中以循环遍历它们来检查每个值是否会更好,因此如果不存在则会引发错误? – Lee 2012-04-10 20:07:27

+0

知道你接受了另一个答案。只是想告诉你如何实现这个方案... – Steen 2012-04-11 08:41:33

+0

谢谢我感谢你的imt eon这个耻辱我不能打勾多个 – Lee 2012-04-16 16:19:48

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 
    } 
+0

谢谢,这是我不认为的一种不同的方法。在页面上会有其他输入,但这些将被包装在一个div中,所以我可以用它来引用它们。 – Lee 2012-04-10 20:38:43