1
votes

Obtenir des données dans la console mais afficher undefined dans la sortie principale

Je travaille sur une application avec électron en utilisant axios pour obtenir des données api, mais lorsque j'utilise pour afficher des données, il montre undefined à l'écran et quand je le sortie, il montre la valeur correcte !! Une aide serait appréciée!

const electron = require('electron');
const path = require('path');
const BrowserWindow = electron.remote.BrowserWindow;
const axios = require('axios');

const notifyBtn = document.querySelector('.notify-btn');
const price = document.querySelector('.price');
const targetPrice = document.querySelector('.target-price');

function  getBTC(){
  axios.get('https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD&api_key={api_key}')
        .then(function(response) {
            let cryptos = response.data;
            price.innerHTML = '$'+cryptos;
            console.log(response.data);
        });
}

getBTC();
setInterval(getBTC, 30000);

Je reçois une sortie dans la console: Objet: USD: 3560.263 (prix actuel du bitcoin) J'obtiens une sortie sur l'écran principal: 'undefined'

Je pense que c'est parce que c'est un objet alors comment puis-je afficher un objet? J'ai peut-être tort!! Merci !!


4 commentaires

price.innerHTML = '$'. Cryptos; est-il censé être price.innerHTML = '$' + cryptos; ? Ou quelque chose de similaire? J'imagine que la chaîne '$' n'aurait pas de propriété appelée cryptos


Merci, j'ai corrigé cela mais maintenant j'obtiens '$ [Object object]' sur la sortie principale


Les données de réponse sont un objet. Ce que vous avez vu dans la console vous montre que cryptos est un objet qui a la propriété {USD: 3560.263} . Donc, pour accéder à la valeur, vous utilisez cryptos.USD


Ohh merci d'avoir expliqué, j'ai dissipé mes doutes !! :)


5 Réponses :


1
votes

Vous accédez à la propriété d'une chaîne.

price.innerHTML = '$' + cryptos;

Je pense que vous vouliez concater des valeurs avec un opérateur +

price.innerHTML = '$'.cryptos;
                       ^^^ property


0 commentaires

1
votes

Ce n'est pas

price.innerHTML = '$'.cryptos;
// but
price.innerHTML = '$' + cryptos.USD;

Ajoutez .USD car cryptos est un objet. Et la valeur est enregistrée dans la clé USD


0 commentaires

1
votes

essayez d'utiliser

price.innerHTML = '$'+cryptos.USD;


2 commentaires

Merci beaucoup, cela a fonctionné !! Mais je ne peux pas expliquer pourquoi USD je ne comprends pas !!


La structure @Cybil de votre réponse est le type d'objet: {USD: 3560.263} . vous avez donc besoin d'une clé pour obtenir de la valeur



1
votes

Qu'est-ce que vous essayez d'accomplir avec '$'. cryptos; ?

Si vous essayez de concaténer certaines chaînes, ce n'est pas ainsi que cela fonctionne! essayez "$"+cryptos


0 commentaires

1
votes

Vous ne devez utiliser que des variables de type primitif lors de la composition d'une chaîne.

Si vous souhaitez afficher un objet, vous pouvez simplement utiliser JSON.stringify (cryptos) pour obtenir la chaîne JSON de l'objet entier.

Sinon, vous pouvez imprimer toute autre propriété d'objet de type primitif, comme cryptos.USD .


1 commentaires

Merci beaucoup!!