Java Posted October 31, 2008 Report Share Posted October 31, 2008 Bāc, triviāla lieta, pat kauns, ka nezinu, bet nav sanācis veidot uz JavaScript! Tātad, kā lai dabū sekojoši, līdzīgi kā php ir: $foo = "anna"; ${$foo} = "lagzdiņa"; // sanāk, ka izveidojas variablis $anna = "lagzdiņa", ja nemaldos.... Kā to pašu dabūt uz JavaScript? Link to comment Share on other sites More sharing options...
v3rb0 Posted October 31, 2008 Report Share Posted October 31, 2008 var foo = "anna"; eval('var '+foo+' = "lagzdiņa";'); alert(anna); Link to comment Share on other sites More sharing options...
Java Posted October 31, 2008 Author Report Share Posted October 31, 2008 Tik tāl es pats tiku... Ir vēl viens paņēmiens arī... Bet man tagad interesē sekojoši. Pieņemsim, ka no piemēra, "anna" ir "display". Tagad kā ielikt to iekš: document.getElementById('elem1').style.[te ir tā anna jeb display] = 'none'; ? Link to comment Share on other sites More sharing options...
Java Posted October 31, 2008 Author Report Share Posted October 31, 2008 Atklāju, paldies visiem! :) var property = 'display'; var value = 'none'; window['prop'] = property; document.getElementById(id).style[prop] = value; Link to comment Share on other sites More sharing options...
Java Posted October 31, 2008 Author Report Share Posted October 31, 2008 Beigās man sanāca itin noderīga JavaScript funkcija darbībā ar elementa style propertijiem - notestēta jau uz 5 populārākajiem pārlūkiem (FF3, IE6, IE7, Opera9.5, Safari3.1.2), varbūt kādam arī noder: function changeStyle(id,property,value) { window['prop'] = property; if (document.getElementById(id)) { if (document.getElementById(id).style[prop]==value) { document.getElementById(id).style[prop]=''; } else { document.getElementById(id).style[prop]=value; } } window['prop'] = undefined; } Link to comment Share on other sites More sharing options...
andrisp Posted October 31, 2008 Report Share Posted October 31, 2008 Hm, priekš kam tas window['prop'] ? Un varbūt būtu vērts document.getElementById(id) izpildīt tikai vienu reizi. Un nosaukumu drīzāk toggle nevis change. ;) Link to comment Share on other sites More sharing options...
Java Posted October 31, 2008 Author Report Share Posted October 31, 2008 window['prop'] , lai nav jāizpilda eval(). Lab, vari likt arī window['tempProp'] - izskatās precīzāk tomēr... nu jā, var uzrakstīt funkcijas sākumā: var elem = document.getElementById(id); un turpmāk lietot tikai mainīgo elem Link to comment Share on other sites More sharing options...
andrisp Posted October 31, 2008 Report Share Posted October 31, 2008 Nesapratu par eval. Šitā jau tak arī darbojas: function toggleStyle(id, property, value) { var el = document.getElementById(id); if (el) { if (el.style[property]==value) { el.style[property]=''; } else { el.style[property]=value; } } } Link to comment Share on other sites More sharing options...
Java Posted October 31, 2008 Author Report Share Posted October 31, 2008 Tev taisnība, jopcik, paldies par optimizāciju! Jā, tagad funkcija ir pieslīpēta. Īsti tikai neizprotu vārda toggle pielietojumu? Link to comment Share on other sites More sharing options...
andrisp Posted October 31, 2008 Report Share Posted October 31, 2008 toggle nozīmē "slēgāt no vienas vērtības uz otro". Aptuveni tā. Link to comment Share on other sites More sharing options...
bubu Posted October 31, 2008 Report Share Posted October 31, 2008 imho toggle nozīmē ko tādu kas mainās - ieslēdzas, izslēdzas, piemēram. Tieši to tava funkcija dara - vai nu uzstāda to value, vai arī nomet nost. change nozīmētu ko tādu, kas vienmēr uzstādītu to vērtību - tb el.style[property] = value; bez ierunām. Link to comment Share on other sites More sharing options...
andrisp Posted October 31, 2008 Report Share 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). Link to comment Share on other sites More sharing options...
codez Posted October 31, 2008 Report Share Posted October 31, 2008 (edited) function toggleStyle(id, property, value) { if(el=document.getElementById(id)) { el.style[property]=(el.style[property]==value?'':value); } } Edited October 31, 2008 by codez Link to comment Share on other sites More sharing options...
codez Posted October 31, 2008 Report Share Posted October 31, 2008 function t(i,p,v){if(e=$(i)){e.style[p]=(e.style[p]==v?'':v)}} Link to comment Share on other sites More sharing options...
andrisp Posted October 31, 2008 Report Share Posted October 31, 2008 codez, tu izdarīji tieši to, ko es gribēju. Tikai tā IF vietā varēja vēl vienu ternary operātoru. :] Link to comment Share on other sites More sharing options...
Recommended Posts