css traversing (listing wszystkich elementow)

0

Szukam jak za pomoca jscript, ewentualnie przy pomocy jqurty wykonac pentle po wszystkich selektorach css (np. class, id)

0

Nie do końca rozumiem o co Ci chodzi, tzn. co chcesz otrzymać w każdej iteracji pętli w zmiennej (zmiennych?) sterujących. Możesz jak najbardziej precyzyjnie napisać kilka iteracji?

Oczekuję odpowiedzi w stylu:

"Niech zmienną sterującą będzie i. Będzie ona przyjmowała wartości będące ciągami znaków i oznaczające czytelne dla człowieka nazwy poszczególnych selektorów CSS, zgodne ze specyfikacją CSS 2.1 (tabela 5.1). Wszystkie nazwy pisane będą wyłącznie małymi literami. W pierwszej iteracji pod zmienną i znajdzie się ciąg znaków 'universal selector'. W drugiej, zmienna i będzie zawierała ciąg znaków 'type selectors'. I tak dalej."

Tak, opisana przeze mnie pętla jest raczej bez sensu. Bo po co komu nazwy selektorów. Ale Twój post jest tak lakoniczny, że zupełnie nie wiadomo, czego Ty potrzebujesz. Co to znaczy "wykonać pętle po selektorze class, id"? WTF? Bądź proszę precyzyjny i napisz dokładnie, co chcesz osiągnąć, to może otrzymasz pomoc. Możesz podać precyzyjny przykład wraz z typem zmiennej sterującej. Nie że "najpierw chcę mieć class, potem id itd." -- z tego zdania naprawdę nic nie wynika. Co to jest to class (i analogicznie id)? Wartość atrybutu class jakiegoś elementu EL? Jeśli tak, to nie ma to nic wspólnego z listowaniem selektorów CSS, tylko z listowaniem atrybutów danego elementu (i to, że chodzi o dany element też musisz zaznaczyć -- bo mogło chodzić o wszystkie możliwe atrybuty). W temacie piszesz -- niestety niezbyt zgrabną polszczyzną -- o listingu wszystkich elementów. To teraz chodzi o elementy? To też zmienia postać rzeczy. A może chcesz przeglądać arkusz stylów? Tj. chcesz przejść po wszystkich regułach znajdujących się w jakimś arkuszu stylów? To też jest zupełnie coś innego.

0

oczywiscie, ze chodzi mi o elementy ale, o elementy ktore sa selektorami typu id lub class. Wiec chce pobrac tablice elementow aby natepnie odczytac ich parametry left i top i nastepnie zmodyfikowac.
( zaraz przeczytam do konca twoj post i owentualnie rozjasnie kolejne watpliwosci)

0

TaNie że "najpierw chcę mieć class, potem id itd." -- z tego zdania naprawdę nic nie wynika. Co to jest to class (i analogicznie id)? Wartość atrybutu class jakiegoś elementu EL? Jeśli tak, to nie ma to nic wspólnego z listowaniem selektorów CSS, tylko z listowaniem atrybutów danego elementu (i to, że chodzi o dany element też musisz zaznaczyć -- bo mogło chodzić o wszystkie możliwe atrybuty).
2.
W temacie piszesz -- niestety niezbyt zgrabną polszczyzną -- o listingu wszystkich elementów. To teraz chodzi o elementy? To też zmienia postać rzeczy.
3.
A może chcesz przeglądać arkusz stylów? Tj. chcesz przejść po wszystkich regułach znajdujących się w jakimś arkuszu stylów? To też jest zupełnie coś innego.

Rzeczywiscie nieprecyzyjnie sie wypowiedzialem. Nie chce listing selektorow, tylko elementow, ktore zawieraja parametr left lub top. Wiec chce przegladac arkusz stylow i go modyfikowac. Nie chce listing elementow dom, na ktore selektory wskazuja.

Z tego co zrozumialem:
1 - listing selektorow jezyka
2 - listing elementow htmla na ktore selektory wskazuja
3- przegladanie regol arkusza stylow

W takim razie wybieram bramke numer 3.

0

eureka:
http://www.javascriptkit.com/domref/cssrule.shtml
document.styleSheets[0].cssRules[0] //access the first rule in Firefox

0

To nie taka łatwa sprawa. API "nie do końca działa" w różnych przeglądarkach, że się tak wyrażę. Są obejścia na to, ale zależnie od tego co robisz zastosowanie ich może być albo stosunkowo łatwe, albo ciężkie...

Tutaj masz artykuł o tym na QuirksMode: http://www.quirksmode.org/dom/changess.html. Co prawda on jest o modyfikacji arkusza stylów, ale kod można wykorzystać również do ich odczytywania. Na końcu artykułu masz przypisanie:

theRules[theRules.length-1].style.backgroundColor = '#EEF0F5';

Ale możesz je zamienić na odczytanie, no i zamiast dobierać się do ostatniej reguły, możesz przeglądać je w pętli ze zmienną sterującą i oznaczającą numer reguły (liczbę wszystkich reguł masz w theRules.length):

if (theRules[i].style.top) { // (*)
  // zrob cos
}

Trzeba pokombinować z warunkiem (*). Nie wiem, czy lepiej wstawić tam theRules[i].style.top !== null, czy może theRules[i].style.top !== undefined, czy jeszcze co innego.

edit: Napisałeś posta gdy ja pisałem swojego...

0

interesuje aby dzialalo w przegladarkach mobilnych: Opera, Safari

1 użytkowników online, w tym zalogowanych: 0, gości: 1