Autor Zpráva
tweedy
Profil *
Ahoj,

potřebuju vytvořit třídu v JS která má přečíst z html stránky divy podle jejich class, kterou mají stejnou (třeba "ramec"), a každému tomuto divu mám dát event na kliknutí, při jehož spuštění se zobrazí nějaká css vrstva s dalším obsahem, který se Váže k tomu divu "ramec". Je asi potřeba to nějak projet for cyklem, ale jinak moc nevím jak na to.

Díky moc za každou odpověď
Darker
Profil
Určitě by to šlo pomocí cyklu while (postupně projít všechny elementy) popř i cyklem FOR, pokud bys hledal jen jeden typ elementu (DIV).
V druhém případě:

function nejakafunkce(event) {
   
}
var divy = document.body.getElementsByTagName("DIV");
for(var i=0; i<divy.length; i++) {
  if(divy[i].className=="ramec")
    divy[i].onclick = nejakafunkce;
}
Pokud bys měl nějaké složitější nároky můžeš použít jQuery. Stejně předpokládám, že budeš po kliknutí provádět nějaký grafický efekt a těch jQuery dost umí.
Keeehi
Profil
Ještě existuje document.getElementsByClassName kdyby ti stačilo najít elementy s určitou class a že je to div nebo cokoliv jiného by tě nezajímalo.
Chamurappi
Profil
Reaguji na Darkera:
for(var i=0; i<divy.length; i++)
Ke zjištění celkového počtu <div>ů se musí všechny <div>y vyhledat. Při každém průchodu. Protože metoda getElementsByTagName nevrací pole, nýbrž živou kolekci.

Stejně předpokládám, že budeš po kliknutí provádět nějaký grafický efekt
O tom nic nepsal.


Reaguji na Keeehiho:
Nefunguje ve všech prohlížečích.
Darker
Profil
Chamurappi:
Při každém průchodu.
Pokud za chodu divy nemažeš nebo netvoříš, funguje to bez problémů.
Chamurappi
Profil
Reaguji na Darkera:
To nepopírám, ale není to efektivní, protože zjištění length má lineární časovou složitost, nikoliv konstantní.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0