2012-04-10 71 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