2026, 새로운 도약을 시작합니다.

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

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

상품상세보기 게시판에 원화표시를 환율 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("

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

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

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

답변 5개

채택된 답변
+20 포인트
Copy


4500000

 





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)');

      

        })

    })

}



이렇게 했을때는

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("
로그인 후 평가할 수 있습니다

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

스크립트오류납니다.

$("#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

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

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

로그인
🐛 버그신고