Przytrafił mi się problem, którego nie potrafię rozkminić dlaczego , a tym bardziej rozwiązać. W funkcji deklaruję sobie zmienną i . Wykorzystywana jest ona w pierwszej pętli for. W drugiej pętli for korzystam ze zmiennej k. W tej drugiej pętli, gdy staram się wyświetlić wartość zmiennej i poprzez alert(i) pokazuje mi prawidłową wartość. Problem pojawia się, gdy iteruję poprzez tą wartość tablicę. To pokazuje mi się następujący błąd:
tab[i] is undefined [Break on this error] tab[i][k] = myTdTable[k].innerHTML;
Moja funkcja - problem w 22 linijce kodu :
function stripes() { var i = 0; myTable = document.getElementById("large"); myTrTable = myTable.getElementsByTagName("tr"); for (i=0; i <myTrTable.length; i++){ if(i == 0){ myThTable = myTrTable[i].getElementsByTagName("th"); for (var j=0; j <myThTable.length; j++){ //alert("Th " +myThTable[j].innerHTML); tab[0][j] = myThTable[j].innerHTML; } } else { myTdTable = myTrTable[i].getElementsByTagName("td"); for (var k=0; k <myTdTable.length; k++){ //alert("Td "+myTdTable[k].innerHTML); alert(i); tab[i][k] = myTdTable[k].innerHTML; } } } }
EDIT:
Już poradziłem sobie, źle zdefinowałem tablice. Docelowo funkcja powinna wyglądać tak:
function stripes() { var i = 0; myTable = document.getElementById("large"); myTrTable = myTable.getElementsByTagName("tr"); for (i=0; i <myTrTable.length; i++){ if(i == 0){ myThTable = myTrTable[i].getElementsByTagName("th"); for (var j=0; j <myThTable.length; j++){ //alert("Th " +myThTable[j].innerHTML); tab[0][j] = myThTable[j].innerHTML; } } else { myTdTable = myTrTable[i].getElementsByTagName("td"); for (var k=0; k <myTdTable.length; k++){ //alert("Td "+myTdTable[k].innerHTML); alert(i); tab[i][k] = myTdTable[k].innerHTML; } } }