2013-05-10 3 views
23

Jeśli używasz getElementById do dokumentu takiego jak - document.getElementById, to zawsze działa.Dlaczego funkcja getElementById nie działa na elementach znajdujących się w elemencie dokumentu?

Ale jeśli wykonamy to samo na elemencie, powiedzmy x, jak x.getElementById, to zwróci błąd.

Niezwykłą rzeczą jest to, że getElementsByClassName i getElementsByTagName działają na elementach, jednak nie ma ich getElementById!

+0

co jest tutaj x. Co to znaczy – PSR

+1

@PSR Jest to kolejny element o identyfikatorze. Powiedz "document.getElementById (" el ")' – akash4eva

Odpowiedz

33

Identyfikatory kontenerów powinny być niepowtarzalne, więc nie ma powodu, aby znaleźć obiekt według identyfikatora w innym kontenerze. Dlatego potrzebujesz tylko numeru document.getElementById, aby uzyskać dostęp do dowolnego elementu po jego identyfikatorze, natomiast podczas wyszukiwania według nazwy klasy lub tagu możesz chcieć wyszukiwać tylko w obrębie określonego kontenera, dlatego możesz wykonać x.getElementsByClassName itd.

+1

Tak! Dlaczego do cholery nie pomyślałem o tym! Dzięki! – akash4eva

+0

@ cantera nie powinieneś mieć wielu elementów o tym samym ID na jednej stronie. To nie jest po to ID. Identyfikatory powinny być unikalne. – mash

+0

Identyfikatory nie muszą być niepowtarzalne. Uzyskanie rozdzielonej przecinkami listy wartości może być bardzo ważne. –

Powiązane problemy