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

Lokalna zmienna w JavaScript nie wczytuje się

Object Storage Arubacloud
0 głosów
153 wizyt
pytanie zadane 2 kwietnia 2019 w JavaScript przez eric19972 Użytkownik (590 p.)
edycja 2 marca 2022 przez eric19972
Witam. Powyżej wkleiłem swój kod. Niewiele niestety widać, ponieważ jest to layout odtwarzacza mp3 i bez plików mp3 i jpg jest trochę chaos. Niemniej jednak uda się mi raczej pokazać, na czym polega problem, ponieważ zostawiłem notatki w kodzie.

Po wciśnięciu nextBtn zwiększa się mój index, dlatego zmienna "audio" powinna automatycznie wczytywać już nową piosenkę po wciśnięciu play. Dodając console.log(index) do mojego "play" widzę, że index się zwiększa prawidłowo, jednak dalej odtwarzana jest piosenka 0.mp3 a nie 1.mp3 itd. Jeżeli jednak moją zmienną audio wrzucę wewnątrz funkcji "play" to wszystko działa prawidłowo (odtwarzana jest już piosenka z następnym indexem) jednak NIE DA SIĘ WTEDY ZAPAUZOWAĆ PIOSENKI. Funkcja "pause" kompletnie nie działa, nawet jeżeli wrzucę do niej do środka zmienną audio.

Podsumowując: moja zmienna audio jest poza funkcjami, a potrzebuję jej wewnątrz funkcji "play". Jeżeli umieszczę jej wewnątrz funkcji "play" to przestaje działać funkcja "pause". Jeżeli jej nie umieszczę, to mogę grać i pauzować, jednak tylko jedną piosenkę, bo pomimo że index rośnie, to jakimś cudem funkcja play zawsze i tak odpala piosenkę o indeksie 0.

Jestem początkujący w JS dlatego kompletnie nie mam pojęcia co robić, wertowałem już stacka ale też nie bardzo czaję. Pozdrawiam i baaaardzo dziękuję jeżeli komukolwiek zechce się pomóc :)
1
komentarz 2 kwietnia 2019 przez adrian17 Ekspert (344,860 p.)
(nie wkleiłeś dobrego linka do kodu)
komentarz 2 kwietnia 2019 przez Tomek Sochacki Ekspert (227,510 p.)

@eric9972, po pierwsze to daj link, a po drugie to poczytaj sobie o zasięgu zmiennych w JS i tzw. domknięciach, bo wydaje mi się, że w tym właśnie się nieco zagubiłeś.

komentarz 2 kwietnia 2019 przez eric19972 Użytkownik (590 p.)
komentarz 2 kwietnia 2019 przez eric19972 Użytkownik (590 p.)
Już wkleiłem poprawnego linka, sorry, zamotałem się -.-
komentarz 2 kwietnia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
no ale chwila, co Ty chcesz właściwie zrobić? Skoro używasz tej zmiennej w kilku funkcjach i nie chcesz jej przekazywać jako argument (np. przez wartość jako typ number) to właśnie korzystasz z zadeklarowanej zmiennej w zakresie zewnętrznym. Niezbyt rozumiem w czym dokładnie jest problem?
komentarz 2 kwietnia 2019 przez adrian17 Ekspert (344,860 p.)

Też tego nie rozumiem.

Po wciśnięciu nextBtn zwiększa się mój index

nextBtn.addEventListener('click', function(e){
  e.preventDefault();
  //3. Wołamy funkcję reloadP
  reloadP();
})

//4. Przeładowywanie stronki sprawia, że zawsze zwiększy się nasz index
window.onload = function() {
  var reloading = sessionStorage.getItem("reloading");
  if (reloading) {
      sessionStorage.removeItem("reloading");
      index++;
      console.log(index);
  }
}

function reloadP() {
  sessionStorage.setItem("reloading", "true");
  document.location.reload();
}

Przy przeładowaniu cała strona ładuje się od nowa - w tym cały JS, obiekty, zmienne etc.

komentarz 3 kwietnia 2019 przez eric19972 Użytkownik (590 p.)
Chodzi o to, że przy przeładowaniu strony mój index zwiększa się z 0 na 1. Wtedy po wciśnięciu play jak daję console.log to wczytuje mi index 1, a odtwarza piosenkę dalej 0.mp3 a nie 1.mp3. Jeżeli wrzucę let audio wewnątrz funkcji PLAY to wszystko działa, ale wtedy nie da się pauzować. Pytanie brzmi: dlaczego jeżeli skopiuję let audio do funkcji PLAY to automatycznie przestaje mi działać funkcja PAUSE która nie ma z tym nic wspólnego? Potrzebuję tego let audio wewnątrz funkcji PLAY, albo chociaż dowiedzieć się dlaczego on mój index jest 1 a PLAY dalej korzysta z index 0 odtwarzając 0.mp3 zamiast 1.mp3 z moich plików.
komentarz 3 kwietnia 2019 przez eric19972 Użytkownik (590 p.)
Użyłem funkcji przeładowania ekranu, ponieważ chcę tak jakby na nowo wszystko załadować. Chcę aby strona została odświeżona i załadowana innymi danymi, takimi jak większy index, a co za tym idzie inny tytuł, okładka itd. Potem sobie po prostu stworzę tablicę i na podstawie indexu to dopasuje, ale musi to najpierw zacząć jakoś działać :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 594 wizyt
+1 głos
1 odpowiedź 274 wizyt
pytanie zadane 14 maja 2021 w JavaScript przez Doge Gaduła (3,370 p.)
0 głosów
3 odpowiedzi 231 wizyt
pytanie zadane 28 czerwca 2017 w JavaScript przez E1 Obywatel (1,810 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,922 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!

...