21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
PerToon
Profil
Dá se JS přistupovat k objektům s určitou class? Jak? Dík
Fred
Profil
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
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 *
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
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 *
mozna by to slo zmensit...
with (document) {allel=all?all:getElementsByTagName('*')}
Leo
Profil
"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
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);
}
}
}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0