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

Uncaught TypeError: Cannot read property 'select' of undefined 오류 ㅠㅠ 입니다 채택완료

레스트 11년 전 조회 21,943
 셀렉트 박스에서 일수와 추가 인원에 따라 합산이 되어야 하는 구조 입니다.
하지만 셀렉트 부분의 값을 수정하면 아래와 같은 오류가 발생을 합니다.
  1. Uncaught TypeError: Cannot read property 'select' of undefined http://hpension.net/skin/board/booking/script.js:92" style="box-sizing: border-box; float: right; text-align: right; max-width: 100%; margin-left: 4px; color: #545454; text-decoration: underline; cursor: pointer">script.js:92
해당
</div>
<div>function checkPrice(wr_id)</div>
<div>{</div>
<div>    var select = document.forms["write"]["select"].value;</div>
<div>    var use = document.forms["write"]["use[" + wr_id + "]"].value;</div>
<div>    var stay = document.forms["write"]["stay[" + wr_id + "]"].value;</div>
<div>    var person = document.forms["write"]["person[" + wr_id + "]"].value;</div>
<div>
</div>
<div>    if(use)</div>
<div>    {</div>
<div>        window.alert("선택하신 객실은 예약이 불가능합니다.");</div>
<div>        return false;</div>
<div>    }</div>
<div>
</div>
<div>    var request = create_request();</div>
<div>    request.onreadystatechange = function()</div>
<div>    {</div>
<div>        if(request.readyState == 4)</div>
<div>        {</div>
<div>            if(request.status == 200)</div>
<div>            {</div>
<div>                document.getElementById("price[" + wr_id + "]").innerHTML = request.responseText;</div>
<div>                checkTotal();</div>
<div>            }</div>
<div>            else</div>
<div>            {</div>
<div>                window.alert("프로그램 오류가 발생하였습니다.");</div>
<div>            }</div>
<div>        }</div>
<div>    }</div>
<div>
</div>
<div>    request.open("post", g5_bbs_skin_url + "/check.ajax.php", true);</div>
<div>    request.setRequestHeader("content-type", "application/x-www-form-urlencoded");</div>
<div>    request.send("bo_table=" + g5_bo_table + "&wr_id=" + wr_id + "&select=" + select + "&stay=" + stay + "&person=" + person);</div>
<div>    return;</div>
<div>}</div>
<div>
           
           
       
       
           
           
       
이 셀렉트의 내용인데...
셀렉트 안의 option들은 정상적으로 나오는데...
왜 값을 변경 하면 ㅠ 저런 오류가 뜰까요 하악 ㅠㅠ 
댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
SLOOP
11년 전
스크립트의 에러나는 위치를 보여 주셔야 할꺼같습니다.
 var select = document.forms["write"]["select"].value;
..
 request.send("bo_table=" + g5_bo_table + "&wr_id=" + wr_id + "&select=" + select + "&stay=" + stay + "&person=" + person);
이 두부분에서 의심대네요 write 라는 폼에서 select 라는 이름의 element 에서 값을 가져와서 보내주는건지..
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

레스트
11년 전
var select = document.forms["write"]["select"].value;
이 부분이 에러의 위치 입니다.
이전에 그누보드4에서 있던 스킨과 비교를 해보면 같이 되어 있는데 ㅠㅠ 않되네요

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

11년 전
소스가 이상하네요
적당한 곳에 아래 코드를 넣으세요
로그인 후 평가할 수 있습니다

답변에 대한 댓글 8개

레스트
11년 전

var req = null;
function create_request() {
var request = null;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml12.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = null;
}
}
}
if (request == null)
alert("Error creating request object!");
else
return request;
}
소스를 추가 해보았지만, 역시 해결이 되지 않습니다...이건 그누보드5에선 무리인가요...
그누보드4 스킨을 마스터K 회원님이 그누보드5용으로 수정해서 배포한스킨인데...
이상하게 자동 계산 부분만 문제네요 ㅠㅠ
ajax.js를 줘도 문제네요...휴
균이
11년 전
아!! G5라는 것을 보지 못하고 G4로만 생각했네요
자동 계산 부분이 G5용으로 변환 되지않아서 그렇습니다
ajax.js 필요없이 jquery로 하면 되는데 어려울테니

G4 js 폴더에 ajax.js 화일을 G5 js폴더에 복사헤 넣고 아래 코드로 바꾸세요
<script type='text/javascript' src='../js/ajax.js'></script>
레스트
11년 전
<script type='text/javascript' src='../js/ajax.js'></script>
이거 역시 추가를 했지만...ㅠㅠ않되네요...
아 정말 ㅠㅠ 문제가 있기에 Uncaught TypeError: Cannot read property 'select' of undefined
이렇게 나오는것일텐데...도대체 아무리 봐도 ㅠㅠ 뭐가 문제인지 알지를 못하겠네요 흑흑...
Uncaught TypeError: Cannot read property 'select' of undefined script.js:92
checkPrice script.js:92
onchange write.php?bo_table=reservation&select=2014-05-21:173
ㅠㅠ
균이
11년 전
<form id="mara_write" name="fwrite" <--- name='write'로 수정하세요 라고 했는데
안했네요
레스트
11년 전
지금 다시 적용을 했거든요.
fwrite 에서 write 로 하면...값이 0 이 되버리더라구요 ㅠ
균이
11년 전
G5용이라고 하지만 아주 예전 버젼용이라 최신버젼에서 맞지않는 듯 하기도 하고...
하여튼
<form id="write" name="fwrite" <-- id도 write로 바꾸세요

이제 되거든 막걸리 한잔 사세요 ㅎㅎ
레스트
11년 전
function checkPrice(wr_id)
{
var select = document.forms["write"]["select"].value;
var use = document.forms["write"]["use[" + wr_id + "]"].value;
var stay = document.forms["write"]["stay[" + wr_id + "]"].value;
var person = document.forms["write"]["person[" + wr_id + "]"].value;

if(use)
{
window.alert("선택하신 객실은 예약이 불가능합니다.");
return false;
}

var request = create_request();
request.onreadystatechange = function()
{
if(request.readyState == 4)
{
if(request.status == 200)
{
document.getElementById("price[" + wr_id + "]").innerHTML = request.responseText;
checkTotal();
}
else
{
window.alert("프로그램 오류가 발생하였습니다.");
}
}
}

request.open("post", g5_bbs_skin_url + "/check.ajax.php", true);
request.setRequestHeader("content-type", "application/x-www-form-urlencoded");
request.send("bo_table=" + g5_bo_table + "&amp;wr_id=" + wr_id + "&amp;select=" + select + "&amp;stay=" + stay + "&amp;person=" + person);
return;
}

function checkTotal()
{
var total = 0;
var result = 0;
var form = document.getElementById("mara_write");
var max = form.length;
for(var i = 0; i < max; i++)
{
if(form.elements[i].name == "room[]" && form.elements[i].checked == true)
{
var wr_id = form.elements[i].value;
var price = document.getElementById("price[" + wr_id + "]").innerHTML.replace(/,/g, "");
total += parseInt(price);
result++;
}
}
document.getElementById("total").innerHTML = getComma(total);
return result;
}


우선 말씀하신대로 id=역시 mara_write에서 write로 수정하였습니다.
균이
11년 전
으잉?? 이 소스인가요?
<form id="mara_write" name="fwrite" <-- id는 그대로 원 위치해야 겠네요

0 이 나온다는 것은 ajax로 값을 가져오는 것을 하지못하는 것 같은데 해당 스킨으로 직접 테스트해보지않으면
더 이상은 알 수 없겠습니다

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

11년 전
혹시 다운받은 예약스킨에서 같은 에러가 나는 분은 
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

레스트
11년 전
말씀주신 대로 수정을 해보니
Uncaught ReferenceError: create_request is not defined
새로운 에러가 직면을 하게 되었습니다. ㅠㅠ
var request = create_request();
request.onreadystatechange = function()
{
if(request.readyState == 4)
{
if(request.status == 200)
{
document.getElementById("price[" + wr_id + "]").innerHTML = request.responseText;
checkTotal();
}
else
{
window.alert("프로그램 오류가 발생하였습니다.");
}
}
}
레스트
11년 전
T_T 이거 도대체 왜 이러는걸까요...죄송한 마음에 좋아요 눌러드렸네요...
하아...이것 떄문에 몇시간을 헤매고 있습니다. 당췌 정말 모르겠네요 ㅠㅠ

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

11년 전
var select = document.forms["write"]["select"].value;<---이건
레스트
11년 전
염치 불문하고, ㅠ 도움의 조언을 받고자
쪽지를 보내드립니다. 죄송합니다.

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

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

로그인