• 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

Cloud VPS
0 głosów
271 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ź 522 wizyt
pytanie zadane 14 grudnia 2022 w JavaScript przez Dawidziu Bywalec (2,630 p.)
–1 głos
1 odpowiedź 176 wizyt
0 głosów
0 odpowiedzi 140 wizyt
pytanie zadane 29 lipca 2016 w PHP przez GaCeL Dyskutant (7,500 p.)

93,467 zapytań

142,460 odpowiedzi

322,734 komentarzy

62,847 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
...