Autor Zpráva
Fred
Profil
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
Mám taký dojem, že vytváraš už vytvorené :-)
http://www.fczbkk.com/js/cls/cls.js
Fred
Profil
centi Hmm, asi jo. Dík moc
Fred
Profil
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>
Toto téma je uzamčeno. Odpověď nelze zaslat.