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

getElementsByClassName nie działa w google extension

0 głosów
334 wizyt
pytanie zadane 11 sierpnia 2018 w JavaScript przez Piotr Almond Nowicjusz (190 p.)

Witam,

Potrzebuję stworzyć rozszeżenie do przeglądarki, które będzie zmieniało tag w podrzędnym divie. Wszystko wygląda dobrze gdy użyję metody getElementById:

document.getElementById('widget-html').innerHTML = document.getElementById('widget-html').innerHTML.replace(/div/g, "span");

ale gdy to samo probuje zrobić dla getElementsByClassName rozszeżenie nie chce działać

document.getElementsByClassName('widget1').innerHTML = document.getElementsByClassName('widget1').innerHTML.replace(/div/g, "img");

Czy wie ktoś jaka może być tego przyczyna?

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 11 sierpnia 2018 przez lateM Pasjonat (17,660 p.)

Masz na stronie jeden element o klasie widget1, czy więcej? getElementsByClassName pobierze wszystkie elementy o podanej klasie i zwróci obiekt tablico-podobny. getElementById pobiera Ci referencję do danego obiektu DOM, więc wszystko działa, tutaj dostejesz "tablicę" / "kolekcję" i musisz się odnieść do danej pozycji.

komentarz 11 sierpnia 2018 przez Piotr Almond Nowicjusz (190 p.)
Cześć,

Mam wiele obiektów o tej klasie, czy mogę się odnieść do wszystkich?

Pozdr
komentarz 11 sierpnia 2018 przez lateM Pasjonat (17,660 p.)
Tak, potrzebujesz jakiejś pętli po tym zbiorze obiektów. Podstaw sobie pod zmienną zwracany przez getElementsByClassName obiekt i wyrzuć go w konsoli poprzez "console.log()" i zobacz jak to wygląda. Możesz się po nim poruszać podobnie do normalnej tablicy, jednak wiele metod dostępnych dla zwykłej tablicy nie będzie tutaj działać.
komentarz 11 sierpnia 2018 przez Piotr Almond Nowicjusz (190 p.)

@MateuszB, spróbowałem poniższe i działa

var images = document.getElementsByClassName('widget1');
for (var i = 0, l = images.length; i < l; i++) {
  images[i].innerHTML = images[i].innerHTML.replace(/a/g, "img");
}

 

komentarz 11 sierpnia 2018 przez lateM Pasjonat (17,660 p.)
O czymś takim myślałem

Podobne pytania

0 głosów
1 odpowiedź 614 wizyt
pytanie zadane 14 grudnia 2022 w JavaScript przez Dawidziu Bywalec (2,630 p.)
–1 głos
1 odpowiedź 213 wizyt
0 głosów
0 odpowiedzi 161 wizyt
pytanie zadane 29 lipca 2016 w PHP przez GaCeL Dyskutant (7,500 p.)

93,608 zapytań

142,533 odpowiedzi

323,004 komentarzy

63,101 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

Kursy INF.02 i INF.03
...