Autor | Zpráva | ||
---|---|---|---|
PerToon Profil |
#1 · Zasláno: 6. 8. 2005, 16:38:47
Dá se JS přistupovat k objektům s určitou class? Jak? Dík
|
||
Fred Profil |
#2 · Zasláno: 6. 8. 2005, 16:54:01
Musí se na to napsat funkce. Zkus si upravit tohle
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://kteryZmenitw.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><ht ml><head> <meta content="text/html; charset=windows-1250" http-equiv="Content-Type"> <meta content="cs" http-equiv="Content-Language"> <title>Redakční systém pro blog</title> <style type="text/css"><!-- .zmena p{display:none;} .barva p{display:block;} --></style> <script type="text/javascript"> <!-- var kteryZmenit='zmena';//na kterou třídu aplikovat var cimZamenit='barva';//jaká bude třída po záměně function getClass(xx){//original:http://daniel.glazman.free.fr/weblog/newarchiv e/2003_06_01_glazblogarc.html#s95320189 var rl=new Array(); var ael=document.all?document.all:document.getElementsByTagName('*') 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) } //thx http://www.scottandrew.com/weblog/articles/cbs-events 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 class="zmena"> <h1>aaa</h1> <p>xcfgsdfg</p> </div> <div class="zmena"> <h1>aaa</h1> <p>xcfgsdfg</p> </div> <div class="zmena"> <h1>aaa</h1> <p>xcfgsdfg</p> </div> <div class="zmena"> <h1>aaa</h1> <p>xcfgsdfg</p> </div> |
||
PerToon Profil |
#3 · Zasláno: 6. 8. 2005, 17:02:55
Díky, sice sem to ještě netestnul, a zdá se mi to na první pohled šílený, ale zkusím to. Jde mi o to, že class by se dalo využít podobně jako id, akorát sem na to nikde nic neviděl. Díky.
|
||
peta Profil * |
#4 · Zasláno: 6. 8. 2005, 17:42:50
PerToon
Z toho Fredoveho allel=document.all?document.all:document.getElementsByTagName('*') for(i=0;i<allel.length;i++) if (allel.className==neco) {...} Kde vidis neco sileneho? Jinak zajimavy je take csshover.htc (www.google.com a hledej) coz je pridani hoveru pomoci JS do CSS pres body {behaviour:url(csshover.htc)} |
||
Yuhů Profil |
#5 · Zasláno: 6. 8. 2005, 19:38:45
jinak řečeno musíš projít všechny prvky dokumentu a na všech testovat className. Moc elegantní to není, ale asi nebude jiná cesta.
|
||
peta Profil * |
#6 · Zasláno: 7. 8. 2005, 13:35:34
mozna by to slo zmensit...
with (document) {allel=all?all:getElementsByTagName('*')} |
||
Leo Profil |
#7 · Zasláno: 7. 8. 2005, 16:34:18
"jinak řečeno musíš projít všechny prvky dokumentu a na všech testovat className. Moc elegantní to není, ale asi nebude jiná cesta."
Jina cesta neni, a protoze prochazeni stromu dokumentu, ktere je k tomu potreba, je hodne narocne, doporucuju to udelat jen jednou, a ne treba v cyklu apod. Leo |
||
Spike Profil |
#8 · Zasláno: 9. 8. 2005, 00:36:43
případně lze místo hvězdičky ve Fredove skriptu zapsat konkrétní jméno hledaných tagů
např. <p>: document.getElementsByTagName('p'). Potom pokud používáš vícenásobné třídy (class = "trida1 trida2 ...") je lepší testovat className na výsktyt podřetězce. Takže funkce, která by provedla danou akci pouze na prvcích se zadaným jménem tagů a jejich třídama by mohla vypadat takhle: function XXX (jmenoTagu,trida) { for (i = 0; i < document.getElementsByTagName(jmenoTagu).length; i++) { if (document.getElementsByTagName(jmenoTagu).item(i).className.indexOf(tr ida) != -1) { var o = document.getElementsByTagName(jmenoTagu).item(i); return akce (o); } } } |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0