• 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
265 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ź 515 wizyt
pytanie zadane 14 grudnia 2022 w JavaScript przez Dawidziu Bywalec (2,630 p.)
–1 głos
1 odpowiedź 175 wizyt
0 głosów
0 odpowiedzi 139 wizyt
pytanie zadane 29 lipca 2016 w PHP przez GaCeL Dyskutant (7,500 p.)

93,439 zapytań

142,431 odpowiedzi

322,677 komentarzy

62,802 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

...