codez Posted October 31, 2008 Report Posted October 31, 2008 function t(i,p,v){(e=$(i))&&(e.style[p]=(e.style[p]==v?'':v))}
Java Posted October 31, 2008 Author Report Posted October 31, 2008 Nepatīk šīs pārspīlēti īsās funkcijas. Kur tu saskati tās lietderību un lasāmību? Programmējot - mīnuss. Ja ļoti gribi, vari pārējot uz produkciju nokodēt visus JavaScript (līdzīgi kā Google to dara).
Java Posted October 31, 2008 Author Report Posted October 31, 2008 Vispār vēl problēma varētu būt, ka elementam jau ir attiecīgais stils, kas ir uzstādīts stila failā. Tad JS neredz to vērtību. JS redz tikai tās vērtības, kas ir iekš inline style taga, un ko pats ir uzstādījis (JS uzstāda stilu caur inline, tāpēc pats redz). Uzstādīju stila failā konkrētajam elementam color:green (absolūtā defaultā tas ir pārlūka iestatījums - parasti black), pēc tam palaidu mūsu pašu funkciju toggleStyle('elem1','color','red') - krāsa nomainījās uz sarkanu un vēlreiz nospiežot pogu - atpakaļ uz zaļu! Un atkal visos pārlūkos vienādi! Kur problēma?
v3rb0 Posted October 31, 2008 Report Posted October 31, 2008 mainīgajam 'e' vajag 'var' priekšā pielikt, citāti tā īsā f-ja ir sliktāka par garo un normāli lasāmo ij lasīšanas ziņā, ij tajā kas tur sarakstīts, jo ja nu pēc gada aizmirsi, ka izmanto tur globālu mainīgo?
andrisp Posted October 31, 2008 Report Posted October 31, 2008 Java, man gan liekas, ka codez ironizēja pats par savu pirmo piemēru. Un par to green. A pamēģini uzstādīt color: red; stila failā un tad izsauc togglestyle('elem1', 'color', 'red'). Redzēsi, ka nenoņems nost.
Java Posted October 31, 2008 Author Report Posted October 31, 2008 Un par to green. A pamēģini uzstādīt color: red; stila failā un tad izsauc togglestyle('elem1', 'color', 'red'). Redzēsi, ka nenoņems nost. Red aizstājot ar red, protams, nekas nemainīsies... Bet ir tāda problēma uz operas - kaut kas nav lāga...
andrisp Posted October 31, 2008 Report Posted October 31, 2008 Red aizstājot ar red, protams, nekas nemainīsies... Kāpēc "protams" ?
Java Posted October 31, 2008 Author Report Posted October 31, 2008 Atklāju, ka Opera izmanto #ffffff pierakstu color atribūta vērtībai, savukārt, safari izmanto rgb(255,0,0) - rodas pārpratumi... Tur laikam ir jātaisa papildus checkings vērtību salīdzinājumam... Vai šitais jau ir iebūvēts gatavajos freimworkos (jQuery)?
andrisp Posted October 31, 2008 Report Posted October 31, 2008 Man gan liekas, ka visiem pārlūkiem ir gan HEX, gan rgb(x,x,x) pieraksta atbalsts. Nu vismaz nekad nekad nav bijušas problēmas ar HEX pierakstu.
bubu Posted October 31, 2008 Report Posted October 31, 2008 Neticu, ka Opera un Safari attiecīgi nesaprot vienu vai otru. Imho abi saprot abus pierakstus.
Java Posted October 31, 2008 Author Report Posted October 31, 2008 (edited) Saprot, bet izejot no mūsu funkcijas tas neder, jo jāsalīdzina pa tiešo! Nepieciešams kaut kāds savādāks salīdzināšanas veids, runa ir par šo rindiņu: if (el.style[property]==value) Kādi ieteikumi? Fakts tāds, ka padodot toggleStyle('elem1', 'color', 'red') tas nestrādās uz Operas, savukārt, padodot toggleStyle('elem1', 'color', '#ff0000') tas nestrādās uz Safari. Te ir principāls jautājums - problēma ir salīdzināšanā! Edited October 31, 2008 by Java
andrisp Posted October 31, 2008 Report Posted October 31, 2008 Hmm, ko tad pie alert(el.style[property]) izdod Opera, un ko Safari ?
Java Posted October 31, 2008 Author Report Posted October 31, 2008 (edited) Opera izdeva hexā, Safari rgb() P.S. Runāju par Safari uz Windows. Edited October 31, 2008 by Java
Recommended Posts