Bartosz Barabasz

Bartosz Barabasz Programista, grafik

Temat: Pobranie wszystkich divów i styli

Dzisiaj to juz drugie pytanie:)

Czy jest możliwość gdy tworzę dynamicznie obiekty DIV o strukturze:

<div id="UnikanyHASH" style="position: absolute; display: block; left: 483px; top: 10px; z-index: 1002; ">TEKST</div>

pobrania wszystkich parametrów style="position: absolute; display: block; left: 483px; top: 10px; z-index: 1002;" oraz TEKSTu i wypisania ich?

konto usunięte

Temat: Pobranie wszystkich divów i styli

tak
Jacek Kozioł

Jacek Kozioł Web Developer,
Webmaster

Temat: Pobranie wszystkich divów i styli

Tak, można np. w taki sposób:

function getInlineStyles(divID){
var elem = document.getElementById(divID);
var elemStyles = elem.style.cssText;
var tempArrStyle = [], arrStyles= [];


//dodatkowo - jeśli chcieli byśmy w jakimś DIV'ie wyświetlić pola atrybutu 'style'
var resultDiv = document.getElementById('result');
var result = '';


tempArrStyle = elemStyles.split(';');

for(var i=0; i<tempArrStyle.length; i++){
var temp = tempArrStyle[i].split(':');

if(temp[0] != ''){
var tempProperty = temp[0].toLowerCase().replace(' ', '');
var tempValue = temp[1].replace(' ', '');
arrStyles[tempProperty] = temp[1];

//dodatkowo - przygotowywujmy wynik jaki zostanie wyświetlony w DIV'ie z informacją
result += tempProperty + ' : ' + temp[1] + '<br />';
}
}

//dodatkowo - wyświetlamy zawartość w DIV'ie z informacją
if(resultDiv){
resultDiv.innerHTML = result;
}

}

//wywołanie funkcji
getInlineStyles('UnikanyHASH');

konto usunięte

Temat: Pobranie wszystkich divów i styli

@Jacek Kozioł: ale się naprodukowałeś :P zamiast tworzyć for/while/stotymczasowychzmiennychoniejasnychnazwach wystarczy skorzystać z natywnych możliwości javascript, np.

elem.style.cssText.split(';').map(callback_dla_kazdego_elementu_tablicy)

;)

konto usunięte

Temat: Pobranie wszystkich divów i styli

Kamil B.:
zamiast tworzyć for/while/stotymczasowychzmiennychoniejasnychnazwach wystarczy skorzystać z natywnych możliwości javascript, np.

elem.style.cssText.split(';').map(callback_dla_kazdego_elementu_tablicy)
Funkcja map jest zaimplementowana dopiero w IE 9, więc żeby Twój super-krótki kod zadziałał w starszych przeglądarkach, musisz dopisać własną implementację map, a wtedy już kod się lekko rozrasta.

Nie wiem, po co się męczyć w czystym JS, skoro łatwo, szybko i przyjemnie można to zrobić w jQuery.

konto usunięte

Temat: Pobranie wszystkich divów i styli

Tomasz K.:
Kamil B.:
zamiast tworzyć for/while/stotymczasowychzmiennychoniejasnychnazwach wystarczy skorzystać z natywnych możliwości javascript, np.

elem.style.cssText.split(';').map(callback_dla_kazdego_elementu_tablicy)
Funkcja map jest zaimplementowana dopiero w IE 9, więc żeby Twój super-krótki kod zadziałał w starszych przeglądarkach, musisz dopisać własną implementację map, a wtedy już kod się lekko rozrasta.
Rozumiem więc, że najlepiej wcale nie korzystać z nowych możliwości języków, skoro starsze oprogramowanie tego nie wspiera? Przy takim rozumowaniu ludzkość skończyłaby na programowaniu z Asemblerem (max).

- natywne funkcje zadziałają szybciej od własnych pętelek/funkcjonalności

- dla starych/zacofanych przeglądarek można dać browser polyfill i tylko tą jedną przeglądarkę zamulić własnymi funkcjami - nie wszyscy muszą tracić przez ignorację jednego
Jacek Kozioł

Jacek Kozioł Web Developer,
Webmaster

Temat: Pobranie wszystkich divów i styli

Chłopaki, nie prowadzić sporów. Przyznam że pominąłem fakt możliwości skorzystania z map(), może dlatego że niestety zwraca się uwagę na przestarzałe przeglądarki i tak z przyzwyczajenia mi zostało. Natomiast funkcje napisałem bez wykorzystania framework'a z prostej przyczyny, nie wiadomo kto jakiego framework'a używa - fakt jQuery jest bardzo popularny ale nie zawsze stosowany - przykładem jest bardzo dobry CMS Contao który korzysta z MooTools'a dlatego gdy ktoś pyta jak wykonać jakieś zadanie, z reguły szukam rozwiązania w czystym JS'ie.

konto usunięte

Temat: Pobranie wszystkich divów i styli

Kamil B.:
Rozumiem więc, że najlepiej wcale nie korzystać z nowych możliwości języków, skoro starsze oprogramowanie tego nie wspiera?
Nic takiego nie napisałem. Jak najbardziej korzystać z nowych ficzerów, ale bez olewania znacznej części rynku. Na dzień dzisiejszy można sobie odpuścić pisanie pod IE 6, ale już pod IE 7-8 nie bardzo, bo to jest jakieś 15% rynku (w Polsce).
- natywne funkcje zadziałają szybciej od własnych pętelek/funkcjonalności
To się nazywa mikrooptymalizacja. Gdyby to miało jakieś znaczenie, to żaden framework w żadnym języku nie miałby racji bytu.
- dla starych/zacofanych przeglądarek można dać browser polyfill i tylko tą jedną przeglądarkę zamulić własnymi funkcjami - nie wszyscy muszą tracić przez ignorację jednego
Tak robi np. MooTools w przypadku funkcji map.

konto usunięte

Temat: Pobranie wszystkich divów i styli

Tomasz K.:
Nie wiem, po co się męczyć w czystym JS, skoro łatwo, szybko i przyjemnie można to zrobić w jQuery.

Bo uzycie calej biblioteki jQuery, tylko po to by zrobic pare loopow krocej, to jest dopiero rozrosniety kod? ;)

Następna dyskusja:

pobranie nazw i stylu wszys...




Wyślij zaproszenie do