2012-07-10 36 views
0

我有問題,讓所有的表單數組值到JS數組,用一個數值它做工精細:獲取所有形式的陣列JS數組

  var el = document.getElementsByName('p[]'); 
      for (var i = 0, j = el.length; i < j; i++) { 
      var elem = el[i]; 
      alert(elem.value); 
      } 

但是當我嘗試添加更多它不工作:

var el = document.getElementsByName('p[]', 'k[]', 'ka[]', 's[]'); 
       for (var i = 0, j = el.length; i < j; i++) { 
       var elem = el[i]; 
         alert(elem.value); 
        $.post("test.php", { 'p': [elem.value] }); 
         } 

這裏是我的形式:形式是動態的(與按鈕點擊我可以用這4個領域增加新的生產線:

<form name="form"> 
    <input type="text" name="p[]" id=name" /> 
    <input type="text" name="k[]" id="quant" size="3" /> 
    <input type="text" name="ka[]" id="price" size="10" /> 
    <input type="text" name="s[]" id="sum" size="10" disabled="disabled"/><br /> 
    </form> 
+0

[document.getElementsByTagName] (https://developer.mozilla.org/en/DOM/document.getElementsByTagName)只支持一個參數。 – Bergi 2012-07-10 20:56:46

+0

爲什麼你的文本輸入有數組名稱? – Bergi 2012-07-10 20:57:41

+0

既然你想獲得表單中的所有元素,你也可以使用'var el = document.forms ['form']。elements;'。 – 2012-07-10 20:57:43

回答

3

document.getElementsByName不會以您試圖使用它的方式神奇地採用多個參數。您需要多次撥打gEBN,每個姓名一次(詳見another answer)。

或者,在<form>的投入只是迴路:

var form = document.getElementsByName('form')[0]; 
var inputs = form.getElementsByTagName('input'); 
for (var i = 0, j = inputs.length; i < j; i++) { 
    // snip 
} 
+2

你忘了只使用NodeList中的第一個表單。 – Bergi 2012-07-10 20:59:52

+0

@Bergi固定,謝謝 – 2012-07-10 21:00:38

+0

@Matt球現在它的工作正常,有沒有辦法也添加字段名稱,如p = value,k =值...我想這一切的數據發送到php文件並將其添加到MySQL。 – 2012-07-10 21:09:28

1

得到elementsByName需要一個字符串參數,所以你應該做這樣的事情的方法:

var listOfElements = ['p[]', 'k[]', 'ka[]', 's[]']; 
for (var i=0; i<listOfElements.length; i++) { 
    var el = document.getElementsByName(listOfElements[i]); 
    ... 
}