Czy da się przypisać nazwę klasy css po przez classList do elementu tablicy?

0

Mam np. coś takiego:

var classesTable = ["bg-brown-song-0","bg-brown-song-1","bg-brown-song-2","bg-brown-song-3","bg-brown-song-4","bg-brown-song-5"];
var song0 = document.getElementById("song-0");
var song1 = document.getElementById("song-1");
var song2 = document.getElementById("song-2");
var song3 = document.getElementById("song-3");
var song4 = document.getElementById("song-4");
var song5 = document.getElementById("song-5");
var songListTitle = [song0,song1,song2,song3,song4,song5];

I teraz przy każdym takim wierszu kodu:

songListTitle[j].classList.add(classesTable[j]); 
songListTitle[j].classList.remove(classesTable[j]);

...wyświetla mi taki error:"Cannot read property 'classList' of undefined"

Wydawało mi się, że po utworzeniu tablicy (jak w każdym innym języku), wystarczy przypisać classList.add lub classList.remove, do konkretnego elementu tablicy. Dlatego nie rozumiem dlaczego wyświetla error.

Reasumując:
W jaki sposób przypisać classList.add(nazwaKlasy) do elementu tablicy?

Od razu mówię, że muszę to zrobić w czystym javascript.

0
  1. jaka wartosc ma j?
  2. jezeli w konsoli wyswietlisz song-5 co dostajesz?
  3. czemu w taki sposob?
0
  1. jaka wartosc ma j?
    j ma wartość od 0 do 5
  2. jezeli w konsoli wyswietlisz song-5 co dostajesz?
    Jak daje console.log("song-5"), to w konsoli jest po prostu "song-5".

edit:
Dałem też w konsoli: console.log(classesTable[j]); i wyświetliło mi sam ciąg znaków, więc dałem:
console.log("'"+classesTable[j]+"'");, ale też jest ten error.
3) czemu w taki sposob?
Bo koniecznie muszę to zrobić w zwykłym js.

Generalnie cały kod mi działa, tylko tutaj jest klops.

0
  1. lepiej pokazac kod, ale spoko to pewnie jakas prosta petla
  2. nie mowie zebys wyswietlil string (bo teraz to robisz) tylko wyswietlil obiekt
console.log(song5)

Bo koniecznie muszę to zrobić w zwykłym js
to zapewne mozna zrobic inaczej. Napisz co chcesz osiagnac a nie jak to zrobic. Dodaj jeszcze zalozenia jezeli jakies masz (np ze musi byc tylko js uzywany)

0
  1. edit:Oczywiście tablica songTable jest zdefiniowane tylko duże wcześniej i poza funkcją.
function PlayNextSongIter()
{
    var indexesTable = [0,1,2,3,4,5];
    var j=0;
    for (i=0;i<songTable.length;i++)
    {
        if (i==indexesTable[i]){
            playerAudio.src = songTable[i];
            console.log(song5);
            console.log(songListTitle[j]);
            console.log("'"+classesTable[j]+"'");
           
            songListTitle[j].classList.add("'"+classesTable[j]+"'");
            j++;
            songListTitle[j].classList.remove("'"+classesTable[j]+"'");//1
            j++;
            songListTitle[j].classList.remove("'"+classesTable[j]+"'");//2
            j++;
            songListTitle[j].classList.remove("'"+classesTable[j]+"'");//3
            j++;
            songListTitle[j].classList.remove("'"+classesTable[j]+"'"); //4
            j++;
            songListTitle[j].classList.remove("'"+classesTable[j])+"'";//5
            playerAudio.play();
            
        }

    }
}
<a id="song-5" href="#">06.Indian - Lucila</a>
  1. Nie wiem co to js używany. Po prostu muszę to zrobić w klasycznym js.
  2. Sory za kiepską jakość kodu.
0

Nie kurcze, ale tak się i tak nie da zrobić, bo ta pętla będzie przelatywać 6 songów za każdym kliknięciem. Bez sensu zrobiłem.

0
fasadin napisał(a):

to zapewne mozna zrobic inaczej. Napisz co chcesz osiagnac a nie jak to zrobic. Dodaj jeszcze zalozenia jezeli jakies masz (np ze musi byc tylko js uzywany)

@fasadin Chcę po prostu stworzyć w zwykłym js przełączanie pomiędzy poszczególnymi piosenkami playlisty, ale tak, żeby po kliknięciu przycisku "next" zmieniał się kolor czcionki odpowiedniego tytułu piosenki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1