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

3년 전 조회 1,747

아래소스에서 document.write 의 주석을 풀면 주소가 표기되는데요

return 받아서 하단에서 불러오면 undefined 뜹니다..

어느문법이 잘못되었는지 좀 봐주실분.. 감사드리겠습니다..

<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=키값&libraries=services"></script>

<script>
let lat = 33.450701;
let lng = 126.570667;

function getAddr(lat,lng){
    let geocoder = new kakao.maps.services.Geocoder();

    let coord = new kakao.maps.LatLng(lat, lng);
    let callback = function(result, status) {
        if (status === kakao.maps.services.Status.OK) {
            //console.log(result);
            return result[0].address.address_name;
            //document.write(result[0].address.address_name);
        }
    };

    geocoder.coord2Address(coord.getLng(), coord.getLat(), callback);

}

aaa = getAddr(lat,lng);
document.write(aaa);
</script>

답변 4개

채택된 답변
+20 포인트

몇가지 방법으로 테스트 해보니 일반적인 방법으로 값이 잘 전달이 안되는 것 같고 아래처럼 하세요

var add
function getAddr(lat,lng){
    let geocoder = new kakao.maps.services.Geocoder();
    let coord = new kakao.maps.LatLng(lat, lng);
    let callback = function(result, status) {
        if (status === kakao.maps.services.Status.OK) {
            console.log(result);
//     alert( result[0].road_address.address_name);
      add= result[0].address.address_name;
  //document.write(add);
        }
    }

   geocoder.coord2Address(coord.getLng(), coord.getLat(), callback);
}

 getAddr(lat,lng);
setTimeout(function(){document.write(add); alert(add) }, 500);//<---8000(8초)까지는 필요 없습니다. 8초나 걸려야 한다면 쓸 수 없는 상태입니다

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

답변에 대한 댓글 1개

이렇게 하니 되네요 정말정말 감사합니다!!!!
2일을 고생했는데 정말 감사합니다!!!

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

안되는가요?

함수내에서는 나오는데 함수 밖에서 값이 안나온다면 함수에서 값을 추출하기도 전에 함수밖의 코드가 실행 되어서 입니다

방법은 두가지

1. return result[0].address.address_name; <--이 자리에 값을 출력하는 코드를 넣는다

document.write(result[0].address.address_name);

2. 주소를 추출하는 시간 동안의 딜레이를 약간 주어서 값을 출력한다

var aaa = getAddr(lat,lng);
setTimeout(function(){ document.write(aaa); }, 1000);


 

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

답변에 대한 댓글 1개

setTimeout(function(){ document.write(aaa); }, 8000);
이렇게 해도 안되네요;;;

document.write(result[0].address.address_name);
이렇게는 되긴했는데... 위의 방법이 깔끔한것같아서 계쏙 이리저리해보고 있는데 안되네요..ㅜㅜ

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

추가 피해자 방지 https://sir.kr/conflictconsultation/245

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

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

var aaa = getAddr(lat,lng);

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

답변에 대한 댓글 1개

let lat = 33.450701;
let lng = 126.570667;

function getAddr(lat,lng){
let geocoder = new kakao.maps.services.Geocoder();

let coord = new kakao.maps.LatLng(lat, lng);
let callback = function(result, status) {
if (status === kakao.maps.services.Status.OK) {
console.log(result);
return result[0].address.address_name;
//document.write(result[0].address.address_name);
}
};

geocoder.coord2Address(coord.getLng(), coord.getLat(), callback);

}

var aaa = getAddr(lat,lng);
document.write(aaa);



이렇게 해도 안되는데용..ㅜㅜ

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

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

로그인
🐛 버그신고