• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

jQuery, tablica, undefined

Object Storage Arubacloud
0 głosów
406 wizyt
pytanie zadane 24 maja 2017 w JavaScript przez Blue Obywatel (1,180 p.)
$(document).ready(function() {   
    
    var moveCounter = 1;
    
    var clicked = new Array(9);
    clicked.fill(false);
    
    var field = document.getElementsByClassName("field");
    
    var i = 0;
    while (i < field.length) {
        $(field[i]).hover(function() {
            if (clicked[i] == false) {
                 if (moveCounter % 2 == 1) {
                    this.style.backgroundColor = "crimson";
                 }
                 else {
                    this.style.backgroundColor = "deepskyblue";
                 }
            }
           
        }, function() {
            if (clicked[i] == false) {
                this.style.backgroundColor = "gray";
            }
        });
        
        $(field[i]).click(function() {
            if (moveCounter % 2 == 1) {
                this.style.backgroundColor = "crimson";
            }
            else {
                this.style.backgroundColor = "deepskyblue";
            }
            ++moveCounter;
            clicked[i] = true;
            
        });
        
        ++i;
    }
});


Witam, dalej próbuję napisać grę w kółko i krzyżyk w JS. Chciałbym, aby po najechaniu kursorem niekliknięte pola zmieniały kolor, a po odjechaniu wracały do poprzedniego stanu. Stworzyłem tablicę, która będzie przechowywać informacje o tym, czy dane pole było już kliknięte, czy nie. Tylko że nie wiem, jak poprawnie przekazać tablicę do funkcji. Przy takim kodzie wartości elementów tablicy są undefined. Proszę o pomoc.

1 odpowiedź

+1 głos
odpowiedź 24 maja 2017 przez OfftheCode Gaduła (4,050 p.)
wybrane 24 maja 2017 przez Blue
 
Najlepsza

Myślę, że sam problem kolorowania elementów w zależności od tego czy były kliknięte można rozwiązać za pomocą klasy css, zobacz Pen'a i sprawdź czy o to Ci chodziło.

komentarz 24 maja 2017 przez Blue Obywatel (1,180 p.)
Dzięki, tak, właśnie o to chodziło. Tylko że chciałbym jednak dowiedzieć się, czemu mój kod nie działa, tak na przyszłość.
komentarz 24 maja 2017 przez OfftheCode Gaduła (4,050 p.)
Hmmm, powiedz mi wpierw jak Ty byś widział, działanie tego w sensie, jak funkcjonuje moveCounter ?
komentarz 24 maja 2017 przez Blue Obywatel (1,180 p.)
moveCounter służy do sprawdzania, którego gracza ruch powinien być teraz wykonany. Dzięki niemu wiem, kiedy podświetlać pola na niebiesko (przy parzystych wartościach), a kiedy na czerwono (przy nieparzystych). Ale tak jak napisałem, problem jest w tym, że ta funkcja jQuery jakby "nie widzi" wartości w tablicy.
komentarz 24 maja 2017 przez OfftheCode Gaduła (4,050 p.)
Wrzuciłbyś to wraz z html do codpena ?
komentarz 24 maja 2017 przez Blue Obywatel (1,180 p.)

CodePen

W CodePenie nie działa już w ogóle, choć to pewnie przez to, że pierwszy raz wrzucam. To znaczy u mnie pola zmieniają chociaż kolory po kliknięciu.

komentarz 24 maja 2017 przez OfftheCode Gaduła (4,050 p.)
zlinkowałeś jquerry w ustawieniach js ? Podrzuć tego pena postaram się pomóc.
komentarz 24 maja 2017 przez Blue Obywatel (1,180 p.)
komentarz 24 maja 2017 przez Blue Obywatel (1,180 p.)

Jeśli na początku funkcji hover dopiszę document.write(clicked[i]); , to wyświetli się "undefined", choć wartości elementów tej tablicy były deklarowane wcześniej na "false".

komentarz 24 maja 2017 przez Blue Obywatel (1,180 p.)
OK, wygląda na to, że mój kod nadaje się do generalnego remontu. Problem tkwił w tym, że ostatecznie zmienna i była równa 9, a clicked[9] nie istniał, a to właśnie do tej wartości i wszystkie te funkcje będą się zawsze odwoływać. Chyba użyję Twojego sposobu. Jeszcze raz dziękuję.
komentarz 24 maja 2017 przez OfftheCode Gaduła (4,050 p.)
Aaaaaa rzeczywiście, nie mogłem się doszukać o co chodzi, ale skoro Ci się udalo to brawo Ty. Powodzenia z dalsza pracą i nie ma za co :D

Podobne pytania

0 głosów
3 odpowiedzi 566 wizyt
0 głosów
0 odpowiedzi 253 wizyt
+1 głos
1 odpowiedź 117 wizyt

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...