Autor | Zpráva | ||
---|---|---|---|
Fred Profil |
#1 · Zasláno: 9. 5. 2005, 00:08:34
Pokouším se udělat takový universální scriptík, něco jako dokument.getElementById(id), jenom místo k ídéčkům by přistupoval ke třídám. A tím scriptem bych potřeboval měnit něco tam a zase zpátky. Jenomže když změním ten class, tak se mi vytratí podmínka toho původního pročesávání. Dočasně jsem to nahradil neškodným rel, ale myslím že by šlo získat něco jako if(document.getAttribute('class').indexOf(trida)
A proto bych potřeboval ne měnit class, ale přidat druhý. Všechny pokusy kolidují na mezeře. Chtěl bych změnit např. <div class="text"> na <div class="text modry"> A myslím, že by to šlo asi jedině nějakým regulárem. Zápis this.className+=zz spolehlivě všechno zhatí. Tady je kdyžtak ten rozdělaný funkční kód, ale není podstatný, takže se v něm není nutno hrabat. Kopíruji ho sem, protože možná někdo pochopí čeho chci dosáhnout spíš z toho kódu, než z mého popisu. <style type="text/css"><!-- .barva{color:green;background:silver;font-size:1.2em;} --></style> <script type="text/javascript"> <!-- function getRel(xx){ var rl=new Array(); var ael=document.getElementsByTagName('*'); var op=(navigator.userAgent.indexOf("Opera")!=-1)?true:false; if(document.all&&!op){ael=document.all} for(i=0,j=0;i<ael.length;i++){ if(ael[i].getAttribute('rel')==xx){//if(ael[i].getAttribute('class')== xx){ rl[j]=ael[i]; j++; }} return rl; } function classRepl(yy,zz){ for(var i=0;i<getRel(yy).length;i++){ getRel(yy)[i].onclick=function(){ if(!this.className){this.className=zz}//if(this.className=yy){this.cla ssName=zz} else{this.className=''}//else{this.className=yy} tady to vytuhne, protože to pročesává class=yy a nemá se to čeho chytit, aby to přeplo zpátky }}} function init(){ classRepl('zmena','barva') } function addEvent(obj,evType,fn){if(obj.addEventListener){obj.addEventListener( evType,fn,true);return true;}else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r;}else{return false;}} addEvent(window,'load',init); //--> </script> <body> <div rel="zmena">div klikací</div><!-- <div class="zmena">div klikací</div> --> <span rel="zmena">span klikací</span><!-- <span class="zmena">div klikací</span> --> <span class="zluta">span neklikací</span> |
||
centi Profil |
#2 · Zasláno: 9. 5. 2005, 00:21:46
Mám taký dojem, že vytváraš už vytvorené :-)
http://www.fczbkk.com/js/cls/cls.js |
||
Fred Profil |
#3 · Zasláno: 9. 5. 2005, 07:27:24
centi Hmm, asi jo. Dík moc
|
||
Fred Profil |
#4 · Zasláno: 9. 5. 2005, 19:55:44
Tak to nebylo on, ale nakonec jsem to vyřešil jinak. Potřeboval jsem univerzální funkci, kam bych jenom dopsal jméno třídy, kterou chci měnit a jméno třídy po změně. Použití na cokoliv, show-hide, změna barvy na onclick a pod. Nakonec jsem to udělal takhle ...
<style type="text/css"><!-- .zmeneno{color:green;} --></style> <script type="text/javascript"> <!-- var kteryZmenit='predzmenou';//na kterou třídu aplikovat var cimZamenit='zmeneno';//jaká bude třída po záměně function getClass(xx){ var rl=new Array(); var ael=document.getElementsByTagName('*'); var op=(navigator.userAgent.indexOf("Opera")!=-1)?true:false; if(document.all&&!op){ael=document.all} for(i=0,j=0;i<ael.length;i++){ if((ael[i].className==xx)){ rl[j]=ael[i]; j++; }} return rl; } function classRepl(kteryZmenit,cimZamenit){ for(var i=0;i<getClass(kteryZmenit).length;i++){ getClass(kteryZmenit)[i].onclick=function(){ this.className=this.className==cimZamenit?kteryZmenit:cimZamenit; } } } function init(){ classRepl(kteryZmenit,cimZamenit) } function addEvent(obj,evType,fn){if(obj.addEventListener){obj.addEventListener( evType,fn,true);return true;}else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r;}else{return false;}} addEvent(window,'load',init); //--> </script> <body> <span class="predzmenou">span klikací 2</span> <span class="predzmenou">span klikací 2</span> <span class="nic">span neklikací</span> |
||
Časová prodleva: 20 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0