2014-09-23 23 views
1

我正在嘗試使用javascript設置DOM元素的默認值。 首先,我需要檢查字段值是否爲空。如果是,則將該值更改爲0. 如果不是,則不執行任何操作。設置多個元素的默認值javascript

文本字段:

<input class="field" type="text" name="feature_value_1" value="" size="50" style="width: 350px;"> 
<input class="field" type="text" name="feature_value_2" value="1" size="50" style="width: 350px;"> 
<input class="field" type="text" name="feature_value_3" value="" size="50" style="width: 350px;"> 

字段的數量總是在不斷變化。

我試圖做這樣的事情

var feature_value = document.getElementsByName("feature_values_" + "/^\d+$/").value; 
if(feature_value !== ""){ 
    change the default values 
} 

而且,據我所知,必須使用某種循環,但我不`噸知道如何實現這一點。誰能幫我?

回答

2

沒有匹配的正則表達式。

最好的解決方案是使用一個普通的className並在集合上循環。

var elems = document.getElementsByClassName("commonClass"); 

另一種選擇是使用querySelectorAll用 「打頭」 的比賽

var elems = document.querySelectorAll("[name^='feature_value_']"); 

和循環

var i; 
for (i=0; i<elems.length; i++) { 
    if (!elems[i].value.length) { //you might want to trim this 
     elems[i].value = "0"; 
    } 
} 

參考文獻:


編輯,添加了可運行的代碼片段:

var elems = document.querySelectorAll("[name^='feature_value_']"); 
 
var i; 
 
for (i=0; i<elems.length; i++) { 
 
    if (!elems[i].value.length) { //you might want to trim this 
 
     elems[i].value = "0"; 
 
    } 
 
}
<input class="field" type="text" name="feature_value_1" value="" size="50" style="width: 350px;"> 
 
<input class="field" type="text" name="feature_value_2" value="1" size="50" style="width: 350px;"> 
 
<input class="field" type="text" name="feature_value_3" value="" size="50" style="width: 350px;">

+0

我不知道我在做什麼錯,但它不會改變任何東西( console.log寫長度:0 – volodymyr3131 2014-09-23 13:37:02

+0

啊,我複製你的代碼上面有錯誤的名稱。 – epascarello 2014-09-23 13:40:24

+0

它仍然顯示長度爲0( 我正在使用 var elems = document.querySelectorAll(「[name^='feature_value_']」); – volodymyr3131 2014-09-23 13:45:32

3

這個想法是正確的,但你錯過了實際的循環。它可能看起來像這樣

for (var i = 0; i < feature_value.length; i++) 
    if (feature_value[i].value === "") 
     feature_value[i].value = "0"; 
+1

我建議使用 '===',因爲( 「」 == 0)爲真 – Mandera 2014-09-23 13:23:12

+0

好點,我更正了答案 – leopik 2014-09-23 13:23:51

+0

答案沒有提到getElementsByName錯誤的第一個問題。只解答一半問題。 – epascarello 2014-09-23 13:30:48