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

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

QA

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

본문

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

 

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

 

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

 

https://jsfiddle.net/oxy5qk72/

 

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

 


// 가격계산
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))+" 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


<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' 끝에 꼭 닫아주세요 ㅎ

 

아 찾은것 같습니다 ㅎ

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

금액이 잘 찍힌다고 가정했을때 이렇게 해도 될거같습니다.

저도 궁금해요.

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

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

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

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

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

스크립트오류납니다.

$("#sit_tot_price").empty().html("<span class='zex' cur='KRW>'총 금액 :</span> "+number_format(String(total))+" 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 이 없다고..

 


// 가격계산
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))+" 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 (예상금액)');
      
        })
    })
}
}

사랑합니다.

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

 

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

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

회원로그인

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