![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 25.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam problem z wypełnieniem tabeli HTML losowymi liczbami generowanymi za pomocą Javascriptu. Dopiero raczkuje w tej tematyce i krok po kroku zaczynam studiować książkę "Po prostu Javascript i Ajax". Niestety, zatosowana tam pętla FOR nie działa. Poniżej zamieszczam kod: Kod var usedNums = new Array(76); function initAll(){ if (document.getElementById){ for (var i=0; i<24; i++){ setSquare(i);// jeśli w pętli wstawię alerta to jedyny wynik zwrócony przez przeglądarkę to 0, a gdzie pozostałe 23 liczby? } } else{ alert ("Przykro mi, ale Twoja przegladarka nie jest w stanie obsluzyc tego skryptu"); } } function setSquare(thisSquare){ var currSquare = "square" + thisSquare; var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4); var colBasis = colPlace[thisSquare] * 15; var newNum; do { newNum = colBasis + getNewNum() + 1; } while (usedNums[newNum]); usedNum[newNum] = true; document.getElementById(currSquare).innerHTML = newNum; } function getNewNum(){ return Math.floor(Math.random() * 15); } Proszę o wskazanie miejsca, w którym występuje błąd, powodujący brak wyniku, którym byłoby wypełnienie tabeli losowymi liczbami. Pozdrawiam i gorąco liczę na odzew. Pewnie to jakiś drobny błąd, który wkradł się do książki, ale teoretycznie moim zdaniem powyższy kod powinien działać, a nie działa :-( |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
w zaleznosci od przegladarki z ktorej korzystasz powinienes miec jakas konsole błędów albo feature "break on exception".
zeby powiedziec dokladnie gdzie masz błąd to troche za mało kodu, musialbys dac rowniez tą tabelke w htmlu którą chcesz zapelnic liczbami. W ogole to najlepiej na początek zabawy z javascriptem daj sobie spokoj z czystym javascriptem - tylko sie zrazisz. Uzywaj jQuery. Biblioteka jQuery niweluje roznice miedzy przegladarkami na poziomie javascriptu, bez jQuery musisz pisac kod na kilka przeglądarek na raz. Alerta wstawiasz przed czy za setSquare(i) ? Bo jezeli wstawiasz go przed i otrzymujesz tylko jeden wynik, to najprawdopodobniej w setSquare jest błąd który powoduje wyrzucenie wyjątku i zatrzymanie wykonywania skryptu. Najprawdopodobniej jesli zakomentujesz w tej petli setSquare, a zostawisz sam alert(i), powinienes uzyskac 24 alerty, to raczej nie w petli jest problem tylko w tym setSquare. Tak patrzac na szybko problemem moze byc innerHtml, niektore przegladarki posiadaja ten parametr pod inną nazwa z tego co pamietam ze swoich bojów w javascripcie. za to metoda jquery $(element).html('tekst_do_ustawienia'); dziala jednakowo pod kazdą przegladarką (IMG:style_emoticons/default/biggrin.gif) Najlepiej uzyj firebuga / opery dragonfly / chromowskiego "przegląd elementu" czy nawet F12 w internet explorerze i poustawiaj breakpointy i sprawdzaj linijka po linijce w ktorym momencie skrypt sie wykrzacza. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 04:01 |