Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida sobre o evento load e onde tratar os dados do JSON

Boa noite, estou com uma duvida sobre onde eu posso tratar os dados que recebi do JSON. Tenho o seguinte código:

var $ = function(name){
    return document.querySelector(name);
};

//Captura elementos
var dolar = $(".valor-dolar");
var euro  = $(".valor-euro");
var peso  = $(".valor-peso");
var libra = $(".valor-libra");



//Faz conexão e retorna o JSON
var conexao = new XMLHttpRequest();
conexao.open("GET", "http://api.promasters.net.br/cotacao/v1/valores"); //abre uma conexão 
window.onload = function(){
conexao.addEventListener("load", function(){
        var conteudoJson = JSON.parse(conexao.responseText); //converte o texto para um objeto js
        console.log(conteudoJson);
        var dolarCotacao = conteudoJson.valores.USD.valor;
        var euroCotacao  = conteudoJson.valores.EUR.valor;
        var pesoCotacao  = conteudoJson.valores.ARS.valor;
        var libraCotacao = conteudoJson.valores.GBP.valor;
        dolar.innerHTML  = dolarCotacao.toFixed(2);
        euro.innerHTML   = euroCotacao.toFixed(2);
        peso.innerHTML   = pesoCotacao.toFixed(2);
        libra.innerHTML  = libraCotacao.toFixed(2);
            });
    conexao.send(); // envia
}
    console.log(conexao.status);

Existe alguma forma que eu possa trabalhar com os resultados de dolarCotacao fora do evento load, sem que minha var fique com undefined? Ou eu vou precisar fazer operações com a variavel dentro do evento load mesmo?

1 resposta
solução!

Se criar uma variável global você pode acessar ela.

var cotacoes = {
    dolar: undefined,
    euro: undefined,
    peso: undefined,
    libra: undefined
}

// Na função onde vc faz o ajax

cotacoes.dolar = conteudoJson.valores.USD.valor;
cotacoes.euro  = conteudoJson.valores.EUR.valor;
cotacoes.peso  = conteudoJson.valores.ARS.valor;
cotacoes.libra = conteudoJson.valores.GBP.valor;

// Então poderá acessa-la em outras funções

function ConverterRealDolar(valorReal) {
    return valorReal * cotacoes.dolar;
}