COMING SOON 🚀

채택완료

자바스크립트 문제 다시 질문드립니다.

죄송합니다. 문제가 해결되지 않아 다시 올립니다.

 

상품상세보기 게시판에 원화표시를 환율 API를 가져와서 달러와 같이변환하여 보여주려 합니다.

 

Jsfiddle로 환율변환은 확인하였는데 적용하는게 되질 않네요.

 

https://jsfiddle.net/oxy5qk72/

 

아래는 shop.js 코드중 계산하기 부분입니다.

 

Copy
// 가격계산

function price_calculate()

{

    var it_price = parseInt($("input#it_price").val());

 

    if(isNaN(it_price))

        return;

 

    var $el_prc = $("input.io_price");

    var $el_qty = $("input[name^=ct_qty]");

    var $el_type = $("input[name^=io_type]");

    var price, type, qty, total = 0;

 

    $el_prc.each(function(index) {

        price = parseInt($(this).val());

        qty = parseInt($el_qty.eq(index).val());

        type = $el_type.eq(index).val();

 

        if(type == "0") { // 선택옵션

            total += (it_price + price) * qty;

        } else { // 추가옵션

            total += price * qty;

        }

    });

 

    $("#sit_tot_price").empty().html("<span class='zex' cur='KRW>'총 금액 :</span> "+number_format(String(total))+"&nbsp;KRW");

if($(".zex")[0]){

    $.getJSON('https://api.exchangeratesapi.io/latest?base=USD')

    .done(function(data){

        $('.zex').each(function() {

            var cur = $(this).attr('cur');

            if( cur == undefined ) return;

            var old = $(this).text();

            var total = Math.abs(old.match(/\d+/)[0]/data.rates[cur]);

            total = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')

            $(this).html( old + ' - '+ total +' USD (예상금액)');

      

        })

    })

}

}

 

매개변수 total을 가져와 적용시키면 값이 나타나질 않네요.

 

어디가 잘못인지 어제 오늘 이 문제로 여기저기 검색해도 풀리지 않네요.
아래는 해당 테스트 상품페이지입니다.

 

http://ncia.raonnet.com/kr/shop/item.php?it_id=1568106267

답변 5개 / 댓글 6개

채택된 답변
+20 포인트

Copy
<span class='zex' cur='KRW'>4500000</span>

 

<script src='//code.jquery.com/jquery.min.js'></script>
<script>
if($(".zex")[0]){
    $.getJSON('https://api.exchangeratesapi.io/latest?base=USD')
    .done(function(data){
        $('.zex').each(function() {
            var cur = $(this).attr('cur');
            if( cur == undefined ) return;
            var old = $(this).text();
            var num = Math.abs(old.match(/\d+/)[0]/data.rates[cur]);
            num = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
            $(this).html( old + ' (약 '+ num +' USD)');
      
        })
    })
}
</script>

 

이렇게 했을때는

4500000 (약 3,782.79 USD)

으로 잘 나오네요.

 

<span class='zex' cur='KRW'>4,500,000</span>

이렇게 단위구분 콤마가 들어가는경우 

4,500,000 (약 0.00 USD)

으로 출력이 안되네요.

 

작성하신 내용중에 두가지정도 보이는데

+number_format(String(total))+

number_format을 빼보시고

 

total = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')

num부분을 total 로 바꾸신후 테스트한번 해보셔요.

 

 

--------------------------------------------

추가답변

 

cur='KRW 이부분
cur='KRW' 안닫혔네요 ' << 요거

 

아니면

$("#sit_tot_price").empty().html("<span class='zex' cur='KRW'>'총 금액 :</span> "+number_format(String(total))+" KRW");

 

위 부분을 아래와같이 숫자만 나오도록 수정하시고(원본으로)

$("#sit_tot_price").empty().html(+String(total)+);

 

<div id="sit_tot_price"></div>
여기서 가격금액이 찍히니까

 

<div id="sit_tot_price" class="zex" cur="KRW"></div>
이렇게 숫자가 찍히는 div에서 테스트해보세요

 

cur='KRW' 끝에 꼭 닫아주세요 ㅎ

 

답변에 대한 댓글 3개

펄스나인님 답변 너무 감사드립니다.
변수 num를 total로 변경하고 했는데도 마찬가지네요.
다시 해보겠습니다. 답변 정말 감사드립니다.
아 찾은것 같습니다 ㅎ

$("#sit_tot_price").empty().html("<span class='zex' cur='KRW>'총 금액 :</span> "+number_format(String(total))+" KRW");

이부분에 문제는
<span class='zex' cur='KRW>'총 금액 :</span>
여기에 있어요

<span class='zex' cur='KRW'> 이 안에 숫자가 있어야 되는데 </span>

<span class='zex' cur='KRW'> 총 금액 : </span> 하고 span 이 닫혀버리고
그뒤에 +number_format(String(total))+ 숫자가 들어가니 출력이 안됬던거고

$("#sit_tot_price").empty().html("<span class='zex' cur='KRW'>총금액 : "+String(total)+" KRW</span>");

금액이 잘 찍힌다고 가정했을때 이렇게 해도 될거같습니다.
+number_format(String(total))+
number_format 을 쓰면 정확하게 계산이 안되는걸로 확인되네요. ㅠ
추가 코딩이 필요할거 같습니다.

사랑합니다.

벼라별 방법으로 해보다 펄스나인님 덕분에 힌트를 얻었습니다.

 

답변 너무 감사드립니다. ^^

답변에 대한 댓글 1개

답은 못됬지만 그래도 다행이네요 ^^

Copy
// 가격계산

function price_calculate()

{

    var it_price = parseInt($("input#it_price").val());

 

    if(isNaN(it_price))

        return;

 

    var $el_prc = $("input.io_price");

    var $el_qty = $("input[name^=ct_qty]");

    var $el_type = $("input[name^=io_type]");

    var price, type, qty, total = 0;

 

    $el_prc.each(function(index) {

        price = parseInt($(this).val());

        qty = parseInt($el_qty.eq(index).val());

        type = $el_type.eq(index).val();

 

        if(type == "0") { // 선택옵션

            total += (it_price + price) * qty;

        } else { // 추가옵션

            total += price * qty;

        }

    });

 

    $("#sit_tot_price").empty().html("<span class='zex' cur='KRW>'총 금액 :</span> "+number_format(String(total))+"&nbsp;KRW");

if($(".zex")[0]){

    $.getJSON('https://api.exchangeratesapi.io/latest?base=USD')

    .done(function(data){

        $('.zex').each(function() {

            var cur = $(this).attr('cur');

            if( cur == undefined ) return;

            var old = $(this).text();

            var num = Math.abs(old.match(/\d+/)[0]/data.rates[cur]);

            num = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')

            $(this).html( old + ' - '+ num +' USD (예상금액)');

      

        })

    })

}

}

스크립트오류납니다.

$("#sit_tot_price").empty().html("<span class='zex' cur='KRW>'총 금액 :</span> "+number_format(String(total))+"&nbsp;KRW");
if($(".zex")[0]){
    $.getJSON('https://api.exchangeratesapi.io/latest?base=USD')
    .done(function(data){
        $('.zex').each(function() {
            var cur = $(this).attr('cur');
            if( cur == undefined ) return;
            var old = $(this).text();
            var total = Math.abs(old.match(/\d+/)[0]/data.rates[cur]);
            total = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
            $(this).html( old + ' - '+ total +' USD (예상금액)');
      
        })
    })

에서

 

total = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')

에서 오류걸리네요

num 이 없다고..

 

답변에 대한 댓글 1개

이것저것 만져보느라 변수변경해서 생긴 오류입니다. ftp랑 위에 코드로 다시 수정하였습니다.

저도 궁금해요.

해당코드를 배포한곳에 보니 거기선 잘 되던데...

같은 코드를 다른곳으로 가져오니 안되요.

코드 오류가 아닌것 같나요.

아래 코드가 제대로 작동을 하지 않는 것 같아요.

$.getJSON('https://api.exchangeratesapi.io/latest?base=USD')

답변에 대한 댓글 1개

URL 클릭해보시면 정상적으로 Json 데이터가 찍히거던요.
제가 붙인 스크립트 코드 문제입니다. ㅠㅠ
https://api.exchangeratesapi.io/latest?base=USD

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