2012-07-10 2 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] }); 
         } 

내 형태 : 형태가 동적 (버튼으로 나는이 네 분야에 새로운 라인을 추가 할 수 있습니다 클릭 :

<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

+0

텍스트 입력에 배열 이름이있는 이유는 무엇입니까? – Bergi

+0

폼의 모든 요소를 ​​가져 오려면,'var el = document.forms [ 'form']. elements;'를 사용할 수 있습니다. –

답변

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

+0

@Bergi 고침, –

+0

@Matt Ball 이제 제대로 작동합니다. p = value, k = value와 같은 필드 이름도 추가 할 수있는 방법이 있습니다.이 모든 데이터는 php 파일로 보내고 mysql에 추가해야합니다. –

1

이 뭔가를해야하므로 elementsByName는, 하나 개의 문자열 인수를 얻을 방법 :

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