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

question-closed [ROZWIĄZANE] querySelector nie wykrywa parentElement

Object Storage Arubacloud
0 głosów
132 wizyt
pytanie zadane 13 maja 2021 w JavaScript przez ITshnyk Obywatel (1,800 p.)
zamknięte 16 maja 2021 przez ITshnyk

Witam!

Piszę program w JavaScript, i napotkałem na poniższy błąd:

Uncaught TypeError: Cannot read property 'style' of null
    at HTMLButtonElement.<anonymous>

Wiem co on oznacza, że element, którego style chcę zmienić ma wartość "null". (Jeśli źle rozumiem, będę wdzięczny za poprawkę). Lecz nie rozumiem dlaczego ma wartość "null".

Poniżej kod:

<!--HTML-->
<tr><td class="firstCell" id="mainElement"><button type="button" id="firstButton">przycisk</button></td></tr>

Proszę zauważyć, że element "#btower1" ma element nadrzędny, który też ma id (mainElement).

const btn = document.querySelector("#firstButton");
    
btn.addEventListener("click", function() {
            
    const cell = document.querySelector(firstButton.parentElement.id);

    console.log(cell);// null

    cell.style.backgroundColor = "#00FF00";  //Uncaught TypeError: Cannot read property 'style' of null
    at HTMLButtonElement.<anonymous>
});

Z góry dziękuję za wszelką pomoc!

komentarz zamknięcia: Rozwiązane

1 odpowiedź

+4 głosów
odpowiedź 13 maja 2021 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 13 maja 2021 przez ITshnyk
 
Najlepsza

Po pierwsze, zmienna firstButton nie jest nigdzie zadeklarowana, więc obstawiam, że nie rzuca przy niej błędu z powodu niejawnej jej obecności pod postacią zmiennej globalnej → https://html.spec.whatwg.org/multipage/window-object.html#named-access-on-the-window-object

Natomiast, chcąc pobrać element po id korzystając z metody document.querySelector, powinieneś podać identyfikator poprzedzony znakiem #, o czym zapomniałeś w → document.querySelector(firstButton.parentElement.id)

To powinno zadziałać:

document.querySelector(`#${firstButton.parentElement.id}`)

Przy czym nie ma potrzeby pobierać elementu td querySelectorem, bo przecież ta komórka jest parentem przycisku, więc powinno wystarczyć const cell = firstButton.parentElement

komentarz 13 maja 2021 przez ITshnyk Obywatel (1,800 p.)

Dziękuję bardzo! Jeszcze wcześniej, coś namieszałem, jest

 firstButton.parentElement.id

a miało być:

 btn.parentElement.id

Ale zmieniłem, tak jak Pan zalecił

const cell = firstButton.parentElement

Pozdrawiam!

Podobne pytania

0 głosów
0 odpowiedzi 362 wizyt
+1 głos
3 odpowiedzi 117 wizyt
pytanie zadane 22 czerwca 2021 w JavaScript przez ITshnyk Obywatel (1,800 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 10 grudnia 2019 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...