Chcę zastąpić zawartość w elemencie HTML, więc używam do tego następującej funkcji:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
Powyższe działa świetnie, ale problem polega na tym, że na stronie mam więcej niż jeden element HTML, który chcę zastąpić zawartością. Nie mogę więc używać identyfikatorów zamiast klas. Powiedziano mi, że javascript nie obsługuje żadnego typu wbudowanego elementu get według funkcji klasy. Jak więc zmienić powyższy kod, aby działał z klasami zamiast z identyfikatorami?
PS Nie chcę do tego używać jQuery.
źródło
class
jako nazwy zmiennej nie działa w Safari, więc obecnie ma wpływ.elems[i].className
w, mówienievar cn
i używaniecn && cn.match(new RegExp("(^|\\s)" + matchClass + "(\\s|$)"))
działałoby lepiej, ponieważ pasuje do dowolnej białej spacji (spacja, spacja nieprzekraczająca, tab, itp.), jednocześnie umożliwiając dopasowanie nazw klas pierwszych / ostatnich. Przykład: jsfiddle.net/AXdtH/1636Oczywiście wszystkie nowoczesne przeglądarki obsługują teraz następującą prostszą metodę:
ale ostrzegam, że nie działa z IE8 ani wcześniej. Zobacz http://caniuse.com/getelementsbyclassname
Ponadto, nie wszystkie przeglądarki zwrócą czysty sposób, w
NodeList
jaki powinny.Prawdopodobnie nadal lepiej jest korzystać ze swojej ulubionej biblioteki w różnych przeglądarkach.
źródło
querySelectorAll
.Będzie to działać w „nowoczesnych” przeglądarkach, które implementują tę metodę (IE8 +).
Jeśli chcesz zapewnić obsługę starszych przeglądarek, możesz załadować autonomiczny silnik wyboru, taki jak Sizzle (4KB mini + gzip) lub Peppy (10K mini) i wrócić do niego, jeśli nie zostanie znaleziona natywna metoda querySelector.
Czy przesadne jest ładowanie silnika selektora tylko po to, aby uzyskać elementy o określonej klasie? Prawdopodobnie. Jednak skrypty nie są aż tak duże i silnik selektora może okazać się przydatny w wielu innych miejscach skryptu.
źródło
document.querySelector
działa w IE8 i nowszych: caniuse.com/queryselectorProsty i łatwy sposób
źródło
Dziwi mnie, że nie ma odpowiedzi przy użyciu wyrażeń regularnych. Jest to w zasadzie odpowiedź Andrew , która używa
RegExp.test
zamiastString.indexOf
, ponieważ wydaje się, że działa lepiej dla wielu operacji, zgodnie z testami jsPerf .Wydaje się również, że jest obsługiwany w IE6 .
Jeśli często poszukujesz tych samych klas, możesz je ulepszyć, przechowując (wstępnie skompilowane) wyrażenia regularne w innym miejscu i przekazując je bezpośrednio do funkcji zamiast ciągu.
źródło
Powinno to działać w prawie każdej przeglądarce ...
Powinieneś być w stanie używać go w następujący sposób:
źródło
źródło
Zakładam, że nie była to prawidłowa opcja, kiedy pierwotnie o to pytano, ale teraz możesz jej użyć
document.getElementsByClassName('');
. Na przykład:Więcej informacji znajduje się w dokumentacji MDN .
źródło
Myślę, że coś takiego:
pracowałbym
źródło
jQuery radzi sobie z tym łatwo.
Zmienia wszystkie elementy .myclass na ten tekst.
źródło
Kiedy niektóre elementy nie mają identyfikatora, używam jQuery w następujący sposób:
To może być dziwne rozwiązanie, ale może ktoś uzna to za przydatne.
źródło
myclass
, wszystkie otrzymają identyfikatormyid
, ale identyfikatory powinny być unikalne! Co więcej, OP wyraźnie mówi, aby unikać jQuery.