자바스크립트 문제 다시 질문드립니다.
본문
죄송합니다. 문제가 해결되지 않아 다시 올립니다.
상품상세보기 게시판에 원화표시를 환율 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을 가져와 적용시키면 값이 나타나질 않네요.
어디가 잘못인지 어제 오늘 이 문제로 여기저기 검색해도 풀리지 않네요.
아래는 해당 테스트 상품페이지입니다.
!-->
답변 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' 끝에 꼭 닫아주세요 ㅎ
!-->
저도 궁금해요.
해당코드를 배포한곳에 보니 거기선 잘 되던데...
같은 코드를 다른곳으로 가져오니 안되요.
코드 오류가 아닌것 같나요.
아래 코드가 제대로 작동을 하지 않는 것 같아요.
$.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 (예상금액)');
})
})
}
}
사랑합니다.
벼라별 방법으로 해보다 펄스나인님 덕분에 힌트를 얻었습니다.
답변 너무 감사드립니다. ^^