2017-02-13 1 views
0

나는 bitcoinaverage.com의 API에서 데이터를 꺼내 var '가격'에 저장하고 있습니다.JS 함수에서 JSON 데이터를 사용하는 방법은 무엇입니까?

나중에 JS에서 수행하는 계산 메신저에 사용하고 싶지만 작동하지 않습니다. 은 동적 '가격'대신 정적 정수를 넣는 경우에만 작동합니다.

가격에 pasteInt()를 시도했지만 여전히 작동하지 않습니다. 내가 뭘 잘못하고 있는지에 대한 아이디어가 있니? https://jsfiddle.net/7b2jaLxh/

var xbtc = new XMLHttpRequest(); 
xbtc.open('GET', 'https://api.bitcoinaverage.com/ticker/global/CAD/', true); 
xbtc.onreadystatechange = function(){ 
    if(xbtc.readyState == 4){ 
     var ticker = JSON.parse(xbtc.responseText); 
     price = ticker.last; 
    } 
}; 
xbtc.send(); 

여기 JS를 어디 메신저 사용하여 가격 변수 : (맨 아래)

var directionSlider = document.getElementById('slider-direction'); 

noUiSlider.create(directionSlider, { 
    start: 20, 
    connect: [true, false], 
    direction: 'ltr', 
    range: { 
     'min': 2, 
     'max': 99.99 
    } 
}); 
var cadc = document.getElementById('cadc'); 
var btcc = document.getElementById('btcc'); 

directionSlider.noUiSlider.on('update', function(values, handle) { 
    cadc.value = directionSlider.noUiSlider.get(); 
    cadConvert(); 
}); 

cadc.addEventListener('change', function(){ 
    directionSlider.noUiSlider.set(this.value); 
    cadConvert(); 
}); 
btcc.addEventListener('change', function(e){ 
    directionSlider.noUiSlider.set(this.value*price); 
}); 
function cadConvert() { 
    var cad = directionSlider.noUiSlider.get(); 
    var cadCalc = cad/price; 
    document.getElementById("btcc").value = cadCalc; 

} 
+0

처음에 가격이 선언되는 곳은 어디입니까? – dargue3

+0

나는 price.js라는 파일에 저장했지만, 을 html로 불러 냈습니다. js를 실행하십시오. – NipBoss

+0

cadConvert() 함수에 가격의 가치가 무엇인지 말해 줄 수 있습니까? 중단 점을 설정하거나 console.log를 수행하십시오. – Chris

답변

1

이에 cad 변수 할당을 변경 시도 : 때문입니다

var cad = parseFloat(directionSlider.noUiSlider.get());

슬라이더는 부동 소수점 대신 문자열로 값을 반환 할 가능성이 가장 높습니다. int number.


업데이트] 답변 :

내가했던 console.log(cad, typeof cad);과 당신의 슬라이더에서 반환되는 것 문자열 값은 참이었다, 그래서 나는 다음 코드 변경 :

function cadConvert() { 
    if(!price) return; 
    var cad = parseFloat(directionSlider.noUiSlider.get()); 
    var cadCalc = cad/price; 
    document.getElementById("btcc").value = cadCalc; 
} 

을 테스트를했고 슬라이더가 잘 작동합니다. 이 업데이트 바이올린보십시오 : 또한

https://jsfiddle.net/5pxvvmdL/

을, 나는 그것이 자동으로 var를 사용하지 않고, 심지어 당신이 자바 스크립트에 변수를 할당 할 때처럼, 단지 코드의 가독성을 위해, 다른 선언 근처의 상단에 var price; 선언을 추가 전역 변수로 선언되면 전역 변수 (예 : 함수 외부)에 var을 사용하여 전역 변수를 문자 그대로 선언하여 코드에서 명시 적으로 수행하는 것이 가장 좋습니다. 앞서 언급했듯이 코드를 읽기 쉽도록하기위한 것입니다.

Additonally, 나는 문서에 "btc"레이어가 없으므로 price.js에있는 document.getElementById('btc').innerHTML = "Global Market: $" + (price).toFixed(2) + " CAD"; 행을 주석 처리 했으므로 오류가 발생했습니다.

마지막으로 onreadystatechange 이벤트에서 cadConvert()를 호출하여 기본 슬라이더 가격을 사용하여 기본 Bitcoin 가격이로드되는 즉시 표시되도록했습니다.

+0

아니, 슬프게도 그것은 그렇지 않아 작동하지 않습니다. – NipBoss

+0

'cadConvert() {'바로 뒤에이 코드를 추가하면 수신중인 값과 유형을 정확하게 볼 수 있습니다 : 'console.' 'console.info ('가격 : ', 가격, (유형 가격));' 출력에 댓글을 붙여서 볼 수 있도록 여기에 붙여 넣으세요. 무슨 일이야. – ablopez

+0

https://jsfiddle.net/7b2jaLxh/를 확인하십시오. – NipBoss

관련 문제