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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
Uncaught TypeError: Cannot read property 'select' of undefined 오류 ㅠㅠ 입니다

QA

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

본문


 셀렉트 박스에서 일수와 추가 인원에 따라 합산이 되어야 하는 구조 입니다.
하지만 셀렉트 부분의 값을 수정하면 아래와 같은 오류가 발생을 합니다.

  1. Uncaught TypeError: Cannot read property 'select' of undefined script.js:92
해당

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 + "&wr_id=" + wr_id + "&select=" + select + "&stay=" + stay + "&person=" + person);
    return;
}
<td>
            <label for="if_stay[<?php echo $ROOM[$i]['wr_id']; ?>]" class="sound_only">숙박기간</label>
            <select name="stay[<?php echo $ROOM[$i]['wr_id']; ?>]" id="if_stay[<?php echo $ROOM[$i]['wr_id']; ?>]" onchange="checkPrice('<?php echo $ROOM[$i]['wr_id']; ?>');" <?php echo $ROOM[$i]['disabled']; ?>>
                <?php optionStay($ROOM[$i]['stay']); ?>
            </select>
        </td>
        <td>
            <label for="if_person[<?php echo $ROOM[$i]['wr_id']; ?>]" class="sound_only">인원선택</label>
            <select name="person[<?php echo $ROOM[$i]['wr_id']; ?>]" id="if_person[<?php echo $ROOM[$i]['wr_id']; ?>]" onchange="checkPrice('<?php echo $ROOM[$i]['wr_id']; ?>');" <?php echo $ROOM[$i]['disabled']; ?>>
                <?php optionPerson($ROOM[$i]['wr_2'], $ROOM[$i]['wr_3']); ?>
            </select>
        </td>

이 셀렉트의 내용인데...
셀렉트 안의 option들은 정상적으로 나오는데...
왜 값을 변경 하면 ㅠ 저런 오류가 뜰까요 하악 ㅠㅠ 

이 질문에 댓글 쓰기 :

답변 4

스크립트의 에러나는 위치를 보여 주셔야 할꺼같습니다.

 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 에서 값을 가져와서 보내주는건지..


var select = document.forms["write"]["select"].value;<---이건 <select name='select'~~~>
이런 태그가 있어야 하는데 이런 이름을 가진 것이 없으니 나오는 에러입니다
-- 이 태그는 날짜 선택 select box인데 이걸 삭제했나보군요
태그를 없앴으면 자바스크립트에서도 없애버려야죠

혹시 다운받은 예약스킨에서 같은 에러가 나는 분은 
<form id="mara_write" name="fwrite" <--- name='write'로 수정하세요

말씀주신 대로 수정을 해보니
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("프로그램 오류가 발생하였습니다.");
            }
        }
    }

소스가 이상하네요
적당한 곳에 아래 코드를 넣으세요

<script type='text/javascript' src='<?=$g4['path']?>/js/ajax.js'></script>


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를 줘도 문제네요...휴

아!! G5라는 것을 보지 못하고 G4로만 생각했네요
자동 계산 부분이 G5용으로 변환 되지않아서 그렇습니다
ajax.js 필요없이 jquery로 하면 되는데 어려울테니

G4 js 폴더에 ajax.js 화일을 G5 js폴더에 복사헤 넣고 아래 코드로 바꾸세요
<script type='text/javascript' src='../js/ajax.js'></script>

<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
ㅠㅠ

G5용이라고 하지만 아주 예전 버젼용이라 최신버젼에서 맞지않는 듯 하기도 하고...
 하여튼
<form id="write" name="fwrite" <-- id도 write로 바꾸세요

이제 되거든 막걸리 한잔 사세요 ㅎㅎ

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로 수정하였습니다.

으잉?? 이 소스인가요?
<form id="mara_write" name="fwrite" <-- id는 그대로 원 위치해야 겠네요

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

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

회원로그인

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