![]() |
![]() ![]() |
![]() |
![]()
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ą ![]() 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. -------------------- "The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 25.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Po ponownym przeanalizowaniu kodu i skorzystaniu z proponowanej obsługi błędów
![]() usedNum[newNum] = true; a powinno być: usedNums[newNum] = true; Odnośnie jQuery, również mam zamiar się nią zając, ale wpierw chciałbym dobrze opanować podstawy JS. Dziękuję za odzew i poradę ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 2.05.2025 - 04:22 |