javascript css

régebben csináltam olyan hogy menuitem overre a style.color-t cseréltem. nyilván csak akkor amikor szükség volt az over eseményre, tehát nem csak a css hovert akartam jsbe rakni. tehát pl almenü megnyitására volt szükség etc. ilyenkor ugye ilyesmiről van szó :

htmlben <div onmouseover="over(this)">

javascriptben: over=function(m){ m.style.color="red" }

etc.

felmerült az igény hogy eleve a betöltött css-t változtassam meg javascriptből, ne csak a node stylet ami alapból felveszi azt.

feladat: stylesheet tömböl kivenni a változtatandó rule-t majd azt csesztetni.

megoldás: a változtatandó css megkeresése a style title alapján: for(var c=0;c<document.styleSheets.length;c++){ if(document.styleSheets[c].title=="ys"){ css=document.styleSheets[c] break } }

na ha ez megvan akkor jön a gebasz hogy a ruleokat másként érem el ie és mozilla alatt: rules=css.rules?css.rules:css.cssRules?css.cssRules:undefined

ie : rules ff : cssRules ez van

na ha ez megvan akkor már bátran csesztethetjük a csst mint eddig. pl : rules[0].style.color="#039"

az hogy melyik rule kell nekünk azt a rules[c].selectorText megmondja tehát hogy adott rule bodyra vagy divre vagy mire vonatkozik. sajnos nem asszociatív a tömb tehát kénytelenek vagyunk for ciklusban kikeresni a számunkra szükséges rule indexét.

ennyi, egészségünkre.