자바스크립트 문제 다시 질문드립니다. 채택완료
죄송합니다. 문제가 해결되지 않아 다시 올립니다.
상품상세보기 게시판에 원화표시를 환율 API를 가져와서 달러와 같이변환하여 보여주려 합니다.
Jsfiddle로 환율변환은 확인하였는데 적용하는게 되질 않네요.
https://jsfiddle.net/oxy5qk72/" rel="nofollow">https://jsfiddle.net/oxy5qk72/
아래는 shop.js 코드중 계산하기 부분입니다.
</p>
<p>// 가격계산</p>
<p>function price_calculate()</p>
<p>{</p>
<p> var it_price = parseInt($("input#it_price").val());</p>
<p> </p>
<p> if(isNaN(it_price))</p>
<p> return;</p>
<p> </p>
<p> var $el_prc = $("input.io_price");</p>
<p> var $el_qty = $("input[name^=ct_qty]");</p>
<p> var $el_type = $("input[name^=io_type]");</p>
<p> var price, type, qty, total = 0;</p>
<p> </p>
<p> $el_prc.each(function(index) {</p>
<p> price = parseInt($(this).val());</p>
<p> qty = parseInt($el_qty.eq(index).val());</p>
<p> type = $el_type.eq(index).val();</p>
<p> </p>
<p> if(type == "0") { // 선택옵션</p>
<p> total += (it_price + price) * qty;</p>
<p> } else { // 추가옵션</p>
<p> total += price * qty;</p>
<p> }</p>
<p> });</p>
<p> </p>
<p> $("#sit_tot_price").empty().html("<span class='zex' cur='KRW>'총 금액 :</span> "+number_format(String(total))+" KRW");</p>
<p>if($(".zex")[0]){</p>
<p> $.getJSON('<a href="https://api.exchangeratesapi.io/latest?base=USD')" target="_blank" rel="noopener noreferrer">https://api.exchangeratesapi.io/latest?base=USD')</a></p>
<p> .done(function(data){</p>
<p> $('.zex').each(function() {</p>
<p> var cur = $(this).attr('cur');</p>
<p> if( cur == undefined ) return;</p>
<p> var old = $(this).text();</p>
<p> var total = Math.abs(old.match(/\d+/)[0]/data.rates[cur]);</p>
<p> total = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')</p>
<p> $(this).html( old + ' - '+ total +' USD (예상금액)');</p>
<p> </p>
<p> })</p>
<p> })</p>
<p>}</p>
<p>}</p>
<p>
매개변수 total을 가져와 적용시키면 값이 나타나질 않네요.
어디가 잘못인지 어제 오늘 이 문제로 여기저기 검색해도 풀리지 않네요.
아래는 해당 테스트 상품페이지입니다.
http://ncia.raonnet.com/kr/shop/item.php?it_id=1568106267">http://ncia.raonnet.com/kr/shop/item.php?it_id=1568106267
답변 5개
</p>
<p><span class='zex' cur='KRW'>4500000</span></p>
<p> </p>
<p><script src='//code.jquery.com/jquery.min.js'></script>
<script>
if($(".zex")[0]){
$.getJSON('<a href="https://api.exchangeratesapi.io/latest?base=USD')" target="_blank" rel="noopener noreferrer">https://api.exchangeratesapi.io/latest?base=USD')</a>
.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></p>
<p>
이렇게 했을때는
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개
$("#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 을 쓰면 정확하게 계산이 안되는걸로 확인되네요. ㅠ
추가 코딩이 필요할거 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>// 가격계산</p>
<p>function price_calculate()</p>
<p>{</p>
<p> var it_price = parseInt($("input#it_price").val());</p>
<p> </p>
<p> if(isNaN(it_price))</p>
<p> return;</p>
<p> </p>
<p> var $el_prc = $("input.io_price");</p>
<p> var $el_qty = $("input[name^=ct_qty]");</p>
<p> var $el_type = $("input[name^=io_type]");</p>
<p> var price, type, qty, total = 0;</p>
<p> </p>
<p> $el_prc.each(function(index) {</p>
<p> price = parseInt($(this).val());</p>
<p> qty = parseInt($el_qty.eq(index).val());</p>
<p> type = $el_type.eq(index).val();</p>
<p> </p>
<p> if(type == "0") { // 선택옵션</p>
<p> total += (it_price + price) * qty;</p>
<p> } else { // 추가옵션</p>
<p> total += price * qty;</p>
<p> }</p>
<p> });</p>
<p> </p>
<p> $("#sit_tot_price").empty().html("<span class='zex' cur='KRW>'총 금액 :</span> "+number_format(String(total))+" KRW");</p>
<p>if($(".zex")[0]){</p>
<p> $.getJSON('<a href="https://api.exchangeratesapi.io/latest?base=USD')" target="_blank" rel="noopener noreferrer">https://api.exchangeratesapi.io/latest?base=USD')</a></p>
<p> .done(function(data){</p>
<p> $('.zex').each(function() {</p>
<p> var cur = $(this).attr('cur');</p>
<p> if( cur == undefined ) return;</p>
<p> var old = $(this).text();</p>
<p> var num = Math.abs(old.match(/\d+/)[0]/data.rates[cur]);</p>
<p> num = num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')</p>
<p> $(this).html( old + ' - '+ num +' USD (예상금액)');</p>
<p> </p>
<p> })</p>
<p> })</p>
<p>}</p>
<p>}</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
스크립트오류납니다.
$("#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 이 없다고..
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
저도 궁금해요.
해당코드를 배포한곳에 보니 거기선 잘 되던데...
같은 코드를 다른곳으로 가져오니 안되요.
코드 오류가 아닌것 같나요.
아래 코드가 제대로 작동을 하지 않는 것 같아요.
$.getJSON('https://api.exchangeratesapi.io/latest?base=USD">https://api.exchangeratesapi.io/latest?base=USD')
답변에 대한 댓글 1개
제가 붙인 스크립트 코드 문제입니다. ㅠㅠ
https://api.exchangeratesapi.io/latest?base=USD
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
변수 num를 total로 변경하고 했는데도 마찬가지네요.
다시 해보겠습니다. 답변 정말 감사드립니다.