Witam,
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:

  1. tab[i] is undefined
  2. [Break on this error] tab[i][k] = myTdTable[k].innerHTML;


Moja funkcja - problem w 22 linijce kodu :

  1. function stripes() {
  2.  
  3. var tab = new Array(new Array());
  4. var i = 0;
  5.  
  6. myTable = document.getElementById("large");
  7. myTrTable = myTable.getElementsByTagName("tr");
  8. for (i=0; i <myTrTable.length; i++){
  9. if(i == 0){
  10. myThTable = myTrTable[i].getElementsByTagName("th");
  11. for (var j=0; j <myThTable.length; j++){
  12. //alert("Th " +myThTable[j].innerHTML);
  13. tab[0][j] = myThTable[j].innerHTML;
  14.  
  15. }
  16. }
  17. else {
  18. myTdTable = myTrTable[i].getElementsByTagName("td");
  19. for (var k=0; k <myTdTable.length; k++){
  20. //alert("Td "+myTdTable[k].innerHTML);
  21. alert(i);
  22. tab[i][k] = myTdTable[k].innerHTML;
  23.  
  24. }
  25. }
  26. }
  27. }


EDIT:
Już poradziłem sobie, źle zdefinowałem tablice. Docelowo funkcja powinna wyglądać tak:

  1. function stripes() {
  2.  
  3. var tab = new Array();
  4. var i = 0;
  5.  
  6. myTable = document.getElementById("large");
  7. myTrTable = myTable.getElementsByTagName("tr");
  8. for (i=0; i <myTrTable.length; i++){
  9. if(i == 0){
  10. myThTable = myTrTable[i].getElementsByTagName("th");
  11. for (var j=0; j <myThTable.length; j++){
  12. //alert("Th " +myThTable[j].innerHTML);
  13. tab[0] = new Array();
  14. tab[0][j] = myThTable[j].innerHTML;
  15.  
  16. }
  17. }
  18. else {
  19. myTdTable = myTrTable[i].getElementsByTagName("td");
  20. for (var k=0; k <myTdTable.length; k++){
  21. //alert("Td "+myTdTable[k].innerHTML);
  22. alert(i);
  23. tab[i] = new Array();
  24. tab[i][k] = myTdTable[k].innerHTML;
  25.  
  26. }
  27. }
  28. }