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

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

QA

SIR 제작의뢰 - 견적무료/익명보정/호스팅, DB 이전/단기개발. 이젠 ' 의뢰인'이 원하는 '제작자'에게만 연락처를 알릴 수 있습니다.

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

본문

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

 

상품상세보기 게시판에 원화표시를 환율 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 (예상금액)');
      
        })
    })
}
}
주소복사
답변의 댓글

앤시아님의 답변

사랑합니다.

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

 

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

주소복사
답변의 댓글
답변을 작성하시기 전에 로그인 해주세요.
전체 79,671 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT