Jestem początkującym programistą JS i korzystam z framewoka jQuery.
function maximumZindex () { "use strict"; var highestZindex = 0; frame.contents().find('body *').each( function zIndexCheck () { if (isNaN(Number($(this).css("zIndex")))) ; // Do nothing when .css() return "auto" else if ($(this).css("zIndex")>highestZindex) highestZindex = $(this).css("zIndex"); }) highestZindex++; return highestZindex; }; //v2 function maximumZindex () { "use strict"; var highestZindex = 0; frame.contents().find('body *').each( function zIndexCheck () { if (!isNaN(Number($(this).css("zIndex")))) { if($(this).css("zIndex")>highestZindex) highestZindex = $(this).css("zIndex"); }; }) highestZindex++; return highestZindex; };
Są dwie wersje tego samego skryptu.
Opis działania: Skrypt wyszukuję największy z-index występujący na stronie w ramce iframe ( $("#frame") = frame ). Pierwszy IF sprawdza czy .css() nie zwraca wartości auto (Nie chcę porównywać "auto" z liczbą a parsowanie "auto" na inta wzraca NaN)jeśli tak to nic nie robi jeśli nie to porównuje do ostatniego największego z-index jakiego napotkał i jeśli jest większy to staje się aktualnym największym z indexem.
Postanowiłem zapytać się znajomego, który jest programistą JS czy kod jest poprawny (pokazałem mu pierwszą wersje) powiedział, że pusty IF nie przejdzie nigdzie więc ok napisałem drugą i powiedział, że kod jest beznadziejny i oprócz tego, że brakuję wywołania wewnętrznej funkcji zIndexCheck() wiem bo tylko tego się od niego dowiedziałem. Zasugerował mi też, że $('body *').each(...) jest za wolny w jaki inny sposób(szybszy) mogę sprawdzić jakie z-index mają wszystkie objekty występujące na stronie.
Co mogę zrobić, żeby ten kod był "elegancki" ?