자바스크립트 질문입니다.

자바스크립트 질문입니다.

QA

자바스크립트 질문입니다.

본문


<form onsubmit="return test_form();">
<input type="hidden" name="test[]" value="">
</form>
 
 
<script>
function test_form() {
  var arr = [1,2,3];
  var test_a = document.getElementsByName('test[]');
  for (var i = 0 i < arr.length; i++) {
     test_a[i].value = arr[$i];
  }
}
</script>

 

 

이렇게 했을때 폼값을

$_POST['test'] = array(

 [0] => 1,

 [1] => 2,

 [2] => 3

)

 

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

 

 

 

이 질문에 댓글 쓰기 :

답변 3

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

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

 

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

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

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

 

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

 

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

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

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

 

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

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

 

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

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

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

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

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

 

 


<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; i < arr.length; i++) {
     test_a[i].value = arr[i];
  }
  
  return true;
}
</script>

 

문법에러가 있으시네요

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 123,622 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT