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.