Zapętlasz się, wywołujesz losowanie, potem wyświetl, potem losowanie itd
Po co ci tablica liczb i masa ifów? Wpisz w nią kolory i losuj indeks
Nie przekazujesz zmiennych bo deklarujesz je lokalnie.
Styl wrzuć w css jeśli go nie zmieniasz (będzie mniej komend w każdym przejściu)
Przykład:
var t = ['red','blue','green','aqua','yellow','pink','purple','orange','black'];
td.style.backgroundColor=t[Math.floor(Math.random() * tablica.length)];
http://jsbin.com/ebifiz/2/edit
Przy pomocy jquery, ale mamy 2013 rok…
A to dlatego, że ta zmienna liczba jest lokalna dla funkcji. Poczytaj o widoczności zmiennych i o zwracaniu wartości przez funkcję. To jest uniwersalne dla prawie wszystkich języków programowania (zwłaszcza tych współczesnych) i jest podstawa podstaw z tych najbardziej podstawowych.
Błędy miną z czasem
Nie usuwaj całej tabeli, tylko przejdź po td i zmień kolory w setInterval (nie musisz powtarzać ciągle tego samego).
for (var i = 0, tr; tr = tab.rows[i]; i++)
for (var j = 0, td; td = tr.cells[j]; j++)
td.style.backgroundColor=t[Math.floor(Math.random() * t.length)];
Jeśli kod napisany przez ciebie by działał nic byś nie zobaczył (zaraz po utworzeniu “usuwasz” tablicę)
Nie do końca rozumiem.
Czy mam objąć setInterval instrukcję losującą
for (var i = 0, tr; tr = tab.rows[i]; i++)
for (var j = 0, td; td = tr.cells[j]; j++)
setInterval(function() { td.style.backgroundColor=t[Math.floor(Math.random() * t.length)]; },1000);
i całość umieścić po
var td = document.createElement("td");
?
Mam error: Uncaught TypeError: Cannot call method ‘appendChild’ of undefined odnoszący się do tr.appendChild(td);
Zauważyłem też, że kiedy definiuję zmienną tab globalnie, to mam zupełnie co innego:
Uncaught TypeError: Cannot read property ‘rows’ of undefined odnoszący się do for (var i = 0, tr; tr = tab.rows_; i++)_
To samowystarczalna funkcja, masz zrobić z niej funkcję i wkleić po wykonaniu wyświetl w setInterval
Dziękuję
Wyświetlał się wtedy error: Uncaught TypeError: Cannot call method ‘appendChild’ of undefined odnoszący się do tab.appendChild(tr);
Tak czy inaczej bardzo dziękuję