[JavaScript][jQuery] wszystkie atrybuty obiektu DOM

[JavaScript][jQuery] wszystkie atrybuty obiektu DOM
YE
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 13 lat
  • Postów:48
0

Witam.
Załóżmy, że mamy:
<img src="image.jpg" alt="obrazek" title="zwykły jpg">
Potrzebuję funkcji, która zwróci mi wszystkie atrybuty i ich wartości w tablicy.
Wiem, że gdzieś już to kiedyś widziałem. Szukałem, ale nic nie udało mi się teraz znaleźć:(.
Ma ktoś jakiś pomysł?
Z góry dzięki.


Nigdy nie mów NIGDY
YE
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 13 lat
  • Postów:48
0

kurcze...zdążyłem temat założyć i od razu znalazłem ;)
Jakby ktoś potrzebował:

Kopiuj
var attrib = $('img')[0].attributes;
var ile = attrib.length;
for(i=0;i<ile;i++){
     alert(attrib[i].name+':'+attrib[i].value)
}

Nigdy nie mów NIGDY
Deti
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
0

Upiększona wersja: :-)

Kopiuj
var i= attrib.length;
while(i--)){
     alert(attrib[i].name+':'+attrib[i].value)
}

BS
  • Rejestracja:ponad 15 lat
  • Ostatnio:ponad 12 lat
0

@yelon:
@Deti:
Chciałbym uściślić, że ładna wersja Detiego (przydatna gdy programista/zespół jest przyzwyczajony do takiej pętli) nie jest dokładnie tym, co klasyczny for yelona. W rzadkich, ale praktycznych przypadkach różnica może być istotna.

Otóż lista attributes[index] zwraca listę atrybutów w kolejności, w jakiej wystąpiły w kodzie źródłowym. W każdym razie powinna to robić. Dla niektórych aplikacji może to mieć znaczenie. Pętla Detiego oczywiście odwraca tę kolejność, więc nie zawsze można jej użyć. Choć nie pamiętam, czy w ogóle kiedyś zależało mi na kolejności atrybutów.

Abstrahując od tej -- zwykle nieistotnej -- różnicy, mam dla Was niestety potencjalnie złą wiadomość. attributes[index] jest słabo/głupio wspierane przez przeglądarki. Tylko przeglądarki najlepiej wspierające standardy ogarniają tę własność prawidłowo. Najnowsze IE (wersja 8) i Firefox (3.5) niestety nie. W przypadku tych przeglądarek błąd nie jest poważny: po prostu podają atrybuty w nieprawidłowej kolejności. Kolejność jednak pewnie nie ma tutaj takiego znaczenia, więc to nie jest duży problem.

Znacznie gorsza sytuacja jest w przypadku starszych wersji IE. IE5, IE6 i niestety również IE7 podają listę... wszystkich możliwych atrybutów, jakie mogą zostać zdefiniowane w elemencie! Nie ogranicza się nawet do atrybutów elementu img, tylko w ogóle wszystkich atrybutów jakichkolwiek elementów w HTML-u. Jeśli piszesz kod, który ma działać również w IE6/7, to musisz wziąć to pod uwagę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.