테스트 사이트 - 개발 중인 베타 버전입니다

자바스크립트 질문입니다. 채택완료

아기새 6년 전 조회 1,824

</p>

<p><form onsubmit="return test_form();"></p>

<p><input type="hidden" name="test[]" value=""></p>

<p></form></p>

<p> </p>

<p> </p>

<p><script></p>

<p>function test_form() {</p>

<p>  var arr = [1,2,3];</p>

<p>  var test_a = document.getElementsByName('test[]');</p>

<p>  for (var i = 0 i < arr.length; i++) {</p>

<p>     test_a[i].value = arr[$i];</p>

<p>  }</p>

<p>}</p>

<p></script></p>

<p>

 

 

이렇게 했을때 폼값을

$_POST['test'] = array(

 [0] => 1,

 [1] => 2,

 [2] => 3

)

 

이렇게 받고싶은데 왜에러가 뜨는지 모르겠습니다.

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

var test_a = document.getElementsByName('test[]'); <-- 이부분을 꼭 name으로 해야 할까요?

var test_a = document.getElementsById('test'); 로 변경하시고

 

<input type="hidden" name="test[]" id="test" value=""> 이렇게 아이디로 잡아주셔야 우선 input 인식을 하는거구요

POST로 넘겨서 배열로 받고 싶으시다면 지금 보내는 방식 자체가 완전 다른거 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

지아부
6년 전

</p>

<p><form method="post" onsubmit="return test_form();">

<input type="hidden" name="test[]" value="">

<input type="hidden" name="test[]" value="">

<input type="hidden" name="test[]" value="">

<button>전송</button>

</form>

 

 

<script>

function test_form() {

  var arr = [1,2,3];

  var test_a = document.getElementsByName('test[]');

  for (var i = 0<span style="color:#e74c3c;">;</span> i < arr.length; i++) {

     test_a[i].value = arr[<span style="color:#e74c3c;">i</span>];

  }

  

  return true;

}

</script></p>

<p>

 

문법에러가 있으시네요

 

for (var i = 0; i < arr.length; i++) {
     test_a[i].value = arr[i];
}

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

플래토
6년 전

태그상에서 존재하는 input 값은 1개의 값입니다.

 

javascript상에서 논리적으로 배열을 선언하고 루프로 수행을 했더라도

 

html 은 1개만 존재하기때문에

단지 이름의 형태가 배열형인 test[] 일뿐이고

실제로 추가된 사항은 없습니다.

 

따라서 위와같이 대입을 하면

없는 태그에 값을 대입하려고 하니 오류가 발생합니다.

 

javascript로 필요한 태그를 추가하신후에

대입하셔야 오류가 안납니다.

https://www.w3schools.com/js/js_htmldom_nodes.asp

를 참고하셔서 처리하시거나

값을 넉넉히 만들어 놓고 처리하시면됩니다.

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인