11528 sujets

JavaScript, DOM et API Web HTML5

bonjour,
quelqu'un serais m'aider je ne comprend pas pourquoi quand je "console.log" à la fin sa me return "undefined"


var Price1BTC = document.getElementById("Price1BTC").textContent

function GetPriceBTC() {
    var requestBTC = new XMLHttpRequest();
    requestBTC.open("GET", "https://coinmarketcap.com/fr/currencies/bitcoin/");
    requestBTC = document.getElementsByClassName(".priceValue").textContent;
}

console.log(GetPriceBTC())
Modérateur
Et tu return quoi maintenant ?
Tu peux tenter de faire un console log de ce que tu veux retourner directement dans la fonction avant de le retourner pour valider. Si c'est vide c'est que ta variable est vide.
Modérateur
Bonjour,

Je crois que tu est malheureusement dans le cas ou le serveur refuse la connexion . Que ce soit via Ajax , ou PhP . tu as le droit à une page 403 : accès interdits ou refusé . Smiley decu

message de la console :
Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://coinmarketcap.com/fr/currencies/bitcoin/. Raison : l’en-tête CORS « Access-Control-Allow-Origin » est manquant. Code d’état : 200.

Message récuperation via Curl
403 ERROR
The request could not be satisfied.
Request blocked. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.

Generated by cloudfront (CloudFront)
Request ID: gMk-PVaa_gszrLesn17UHzwx8ObsA1yRFSyPpn1KYHI4ZtrhZswELA==


et via file_get_contents
Warning: file_get_contents(https://coinmarketcap.com/fr/currencies/bitcoin/): Failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
Modifié par gcyrillus (20 Apr 2022 - 16:41)
Hello,

Contrairement à getElementById, la méthode getElementsByClassName renvoie un tableau contenant 0, 1 ou plusieurs éléments qui portent la classe recherchée : https://developer.mozilla.org/fr/docs/Web/API/Document/getElementsByClassName

Ainsi, Dans ton code actuel, tu essayes d’accéder à la propriété « textContent » d’un tableau, qui n’existe évidemment pas, d’où le résultat « undefined ».

Si tu as un seul élément sur ta page qui porte la classe recherchée, la bonne syntaxe est :
requestBTC = document.getElementsByClassName(".priceValue")[0].textContent


L’idéal serait évidemment en plus de tester si le tableau renvoyé par getElementsByClassName est vide ou contient plus d’un élément avant d’y accéder.
Modifié par GuillaumeBauer (22 Apr 2022 - 10:20)