Próbuję uruchomić funkcję onclick
dowolnego przycisku za pomocą class="stopMusic"
. Otrzymuję błąd w Firebug
document.getElementByClass nie jest funkcją
Oto mój kod:
var stopMusicExt = document.getElementByClass("stopButton");
stopButton.onclick = function() {
var ta = document.getElementByClass("stopButton");
document['player'].stopMusicExt(ta.value);
ta.value = "";
};
javascript
user547794
źródło
źródło
Odpowiedzi:
Prawdopodobnie miałeś na myśli
document.getElementsByClassName()
(a następnie zabranie pierwszego elementu z wynikowej listy węzłów):Nadal możesz otrzymać błąd
w starszych przeglądarkach, w takim przypadku możesz zapewnić implementację rezerwową, jeśli potrzebujesz obsługiwać te starsze przeglądarki.
źródło
Jak powiedzieli inni, nie używasz właściwej nazwy funkcji i nie istnieje ona uniwersalnie we wszystkich przeglądarkach.
Jeśli chcesz
document.getElementById()
pobrać z różnych przeglądarek coś innego niż element z identyfikatorem z , to zdecydowanie sugeruję, abyś uzyskał bibliotekę obsługującą selektory CSS3 we wszystkich przeglądarkach. Zaoszczędzi ci to ogromną ilość czasu na programowanie, testowanie i naprawianie błędów. Najłatwiej jest po prostu użyć jQuery, ponieważ jest on tak szeroko dostępny, ma doskonałą dokumentację, ma bezpłatny dostęp do CDN i ma za sobą doskonałą społeczność ludzi, którzy odpowiadają na pytania. Jeśli wydaje ci się, że więcej, niż potrzebujesz, możesz zdobyć Sizzle który jest tylko biblioteką selektorów (w rzeczywistości jest to silnik selektora wewnątrz jQuery i innych). Używałem go samodzielnie w innych projektach i jest łatwy, produktywny i mały.Jeśli chcesz wybrać wiele węzłów jednocześnie, możesz to zrobić na wiele różnych sposobów. Jeśli dasz im wszystkim tę samą klasę, możesz to zrobić za pomocą:
i zwróci listę węzłów, które mają tę nazwę klasy.
W Sizzle wyglądałoby to tak:
W jQuery wyglądałoby to tak:
Zarówno w Sizzle, jak i jQuery możesz umieścić wiele nazw klas w selektorze w ten sposób i używać znacznie bardziej skomplikowanych i potężnych selektorów:
źródło
Przed przejściem do dalszego sprawdzania błędów, najpierw sprawdź, czy jest to plik
document.getElement s ByClassName ().
sprawdź dokładnie jego getElement s, a nie getElement
źródło
Tak powinno być
getElementsByClassName
, a niegetElementByClass
. Zobacz - https://developer.mozilla.org/en/DOM/document.getElementsByClassName .Należy pamiętać, że niektóre przeglądarki / wersje mogą tego nie obsługiwać.
źródło
document.querySelectorAll
działa całkiem nieźle i pozwala na dalsze zawężenie wyboru.https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
źródło
źle napisałeś, powinno to być "getElementsByClassName",
document.getElementsByClassName - zwraca stos węzłów z więcej niż jednym elementem, ponieważ atrybuty CLASS są używane do przypisywania do wielu obiektów ...
źródło
źródło
getElementByClass
Nie istnieje, prawdopodobnie chcesz użyćgetElementsByClassName
. Możesz jednak użyć alternatywnego podejścia (używanego w szablonach angular / vue /ago ...)źródło
Jeśli napisałeś to „getElementByClassName”, napotkasz ten błąd „document.getElementByClass nie jest funkcją”, więc aby obejść ten błąd, po prostu napisz „getElementsByClassName”. Ponieważ powinien to być element, a nie element.
źródło