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

Odpowiedz Nowy wątek
2019-08-11 13:05
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.

Pozostało 580 znaków

2019-08-11 13:11
0

1) jaka wartosc ma j?
2) jezeli w konsoli wyswietlisz song-5 co dostajesz?
3) czemu w taki sposob?

edytowany 1x, ostatnio: fasadin, 2019-08-11 13:11

Pozostało 580 znaków

2019-08-11 13:21
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.

edytowany 1x, ostatnio: finito, 2019-08-11 13:24

Pozostało 580 znaków

2019-08-11 13:24
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)

3)

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)

Pozostało 580 znaków

2019-08-11 13:28
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();

        }

    }
}

2)

<a id="song-5" href="#">06.Indian - Lucila</a>

3) Nie wiem co to js używany. Po prostu muszę to zrobić w klasycznym js.
4) Sory za kiepską jakość kodu.

edytowany 4x, ostatnio: finito, 2019-08-11 13:34

Pozostało 580 znaków

2019-08-11 13:39
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.

Pozostało 580 znaków

2019-08-12 18:25
0
fasadin napisał(a):

3)

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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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