자바스크립트 질문입니다. 채택완료
</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개
var test_a = document.getElementsByName('test[]'); <-- 이부분을 꼭 name으로 해야 할까요?
var test_a = document.getElementsById('test'); 로 변경하시고
<input type="hidden" name="test[]" id="test" value=""> 이렇게 아이디로 잡아주셔야 우선 input 인식을 하는거구요
POST로 넘겨서 배열로 받고 싶으시다면 지금 보내는 방식 자체가 완전 다른거 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
</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];
}
댓글을 작성하려면 로그인이 필요합니다.
태그상에서 존재하는 input 값은 1개의 값입니다.
javascript상에서 논리적으로 배열을 선언하고 루프로 수행을 했더라도
html 은 1개만 존재하기때문에
단지 이름의 형태가 배열형인 test[] 일뿐이고
실제로 추가된 사항은 없습니다.
따라서 위와같이 대입을 하면
없는 태그에 값을 대입하려고 하니 오류가 발생합니다.
javascript로 필요한 태그를 추가하신후에
대입하셔야 오류가 안납니다.
https://www.w3schools.com/js/js_htmldom_nodes.asp
를 참고하셔서 처리하시거나
값을 넉넉히 만들어 놓고 처리하시면됩니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인