• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zlecę kilka prostych linijek kodu JavaScript

Object Storage Arubacloud
0 głosów
212 wizyt
pytanie zadane 8 grudnia 2019 w Ogłoszenia, zlecenia przez saseta00 Użytkownik (700 p.)

Hejka, nie mogę sobie poradzić z kilkoma rzeczami w javascripcie, a chciałbym umieścić coś na stronie, bardzo opornie mi to idzie, dlatego zwracam się o pomoc za jakąś drobną sumkę (20zł?)bo podejrzewam że dla osób które się znają to jest to kilka minut roboty aby rozwiązać moje problemy. Jeśli cena jest nieadekwatna, proszę zatem zaproponować swoją.

Robię sobię jako projekt szkolny prostą strone z informacjami o kryptowalutach, pobieram sobie ceny poprzez API z:
Link api: https://min-api.cryptocompare[...]LSK,BTG,LTC&tsyms=USD,PLN (edytowalny w zależności jakie pary walut/krypto)
dokumentacja: https://min-api.cryptocompare.com/documentation

Mój kod javascript do łączenia się z API i pobierania danych odnośnie walut:

const linkprice = "https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC,ETH,LSK,BTG,LTC&tsyms=USD,PLN";

async function prices() {

  const response = await fetch(linkprice);
  const data = await response.json();
  console.log(JSON.stringify(data));
  console.log(data.BTC.USD, data.BTC.PLN);    

document.getElementById('btcUSD').textContent = data.BTC.USD;              //w html:   <span id="btcUSD">  </span>
}

prices();

Teraz małe pytanie odnośnie tego, czy nie da się jakoś lepiej podstawić wyniku np. data.BTC.USD niż do <span id"xxx"> (jak wyżej) tak aby można było z niego wygodniej korzystać w html, przykład: jeżeli teraz chcę umieścić cenę BTC USD dwa razy, to muszę tworzyć osobny getelement i przypisać do osobnego spana, ponieważ dwa razy nie działa, no i gdy próbowałem robić tabelę, to sortowanie nie traktuje mi spana jako liczby i po prostu nie działało, próbowałem ID zamienić na classę aby chociaż nie duplikować, ale widocznie źle. Dodatkowo jeżeli chciałbym utworzyć osobną funkcję z np. kalkulatorem to już nie mogę się odwołać do danych z tej funkcji bo nie są globalne, a w funkcji muszą być, bo await bez funkcji async nie działa. Poradzę sobię bez tego, tylko pytam bo może ktoś ma proste rozwiązanie a pomoże mi to zoptymalizować kod.

Wstęp mamy za sobą i pewnie już widać że z javy nie wiem nic.
Główne zadanie które bym chciał rozwiązać:
Otóż to API oferuje również listę ostatnich newsów(50) a ja bym chciał zrobić np. tabelę ostatnich 20-stu, lub po prostu jakieś zakładki z tytułami i po rozwinięciu krótki opis i link.
linkhttps://min-api.cryptocompare.com/data/v2/news/?lang=EN (screen w załączniku, jeśli nie macie wtyczki do segregowania json)
Kod który mi zwraca po prostu wszystko z linku w consoli:

const link = "https://min-api.cryptocompare.com/data/v2/news/?lang=EN";

async function newsy() {

  const response = await fetch(link);
  const data = await response.json();
  console.log(data.Data);     
}

newsy();

Próbowałem to data.Data rozwijać do np. data.Data.title ale nie działało(pierwszy raz mam z tym do czynienia) a nawet jeśli to by wyświetliło wszystkie tytuły z 50 newsów.
Piszę o robieniu tabeli, bo pewnie to można zrobić w jakiś zautomatyzowany sposób, jeśli nie, a można np. pod zmienne podstawiać ostatnie newsy z osobna, ale tak że po pojawieniu się nowych newsów, się nadpisują na najnowsze pozycję, to bym sobie zamiast tabeli stworzył jakieś rozwijane panele w bootstrapie z tytułem newsa i po rozwinięciu krótki opis i link (wszystko z jsona) i tez by ładnie wyglądało.

Dziękuje za każdą pomoc, pozdrawiam!

1 odpowiedź

+2 głosów
odpowiedź 9 grudnia 2019 przez rafal.budzis Szeryf (85,260 p.)

Jeśli async i await Ci nie odpowiada możesz użyć .then (Poczytaj jak działają obietnice (Promise API)) ;) Możesz też zwrócić wynik z funkcji aby dane były globalnie ;) np tak:

 


 
async function getNews() {
  const link = "https://min-api.cryptocompare.com/data/v2/news/?lang=EN";
  const response = await fetch(link);
  return response.json();
}

(async function(){ // twój nowy globalny scope ;)

     const news = await getNews();
     renderNews(news );//funkcja która wyświetli dane i bedzie miała dostęp do tych danych bez ponownego wywoływania 

})()

Wstęp mamy za sobą i pewnie już widać że z javy nie wiem nic.

Nie przesadzaj. Wiele osób nie poznało jeszcze nowego ES6 w całości, a u ciebie jest bardzo dobrze używany ;) 

Podobne pytania

0 głosów
0 odpowiedzi 171 wizyt
pytanie zadane 9 grudnia 2021 w Ogłoszenia, zlecenia przez mi-20 Stary wyjadacz (13,190 p.)
–1 głos
2 odpowiedzi 244 wizyt
0 głosów
0 odpowiedzi 185 wizyt

92,535 zapytań

141,376 odpowiedzi

319,449 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...