Autor Zpráva
Pavka
Profil
Mám prvky se stejnou strukturou a potřebuju jim přiřadit onClick event. Názvy jejich ID začínají stejně, ale počet těchto prvků je dynamický. Lze nějak zjistit veškeré ID co se na stránce vyskytnou? Díky.
Joker
Profil
Nevím, jaká je kompatibilita s prohlížeči, ale šlo by to přes document.all. Určitě document.all funguje v IE a v Opeře. Další bych musel zjistit.
Něco takovéhoto:

for(element in document.all){
if(element==toCoChci) neco();
}
Dero
Profil
Joker: Mozilla má stínovou podporu document.all, tzn. onu kolekci zná a lze s ní pracovat, ale dotaz na document.all vrací false.

Dobrým řešením by bylo použití kolekce document.getElementsByTagName("*") pro všechny ostatní prohlížeče než IE.
Pavka
Profil
Tedy použít document.all (podporuje IE, Opera?) a jestli je false (FF) použít document.getElementsByTagName("*")?
Podporují to i méně rozšířené browsery (např. Safary, Konqueror)?
zero0x
Profil
toto by ti snad mohlo pomoct: http://zero.wblog.sk/2007/01/23/ako-nastavit-chovanie-vsetkych-elentov -daneho-typu-v-dokumente/
Dero
Profil
Pavka: Naopak, použít document.getElementsByTagName("*"), pokud vrátí alespoň jeden prvek, v opačném případě použít document.all - tím máš ošetřeny pravděpodobně všechny používané prohlížeče s podporou DOM. Ve svém prvním příspěvku jsem se špatně vyjádřil, omlouvám se.

Kód by byl takový:

all_elements = document.getElementsByTagName('*').length > 0 ? document.getElementsByTagName('*') : document.all;

A nějaké dodatečné čtení: http://dero.name/weblog/document-all-a-opera-9/
zero0x
Profil
zdravim, este jedna vec ma napadla, nieco z tohto by neslo?

document.elements


document.childNodes



??
Pavka
Profil
Derova verze funguje na výbornou, díky.
Michal Till
Profil
Konstrukci document.all nepouzivejte.

Vas dotaz nedava smysl. Id je id, neni to delane na vyber vsech elementu, ktere nejak zacinaji. K tomu jsou tridy. Muzete pouzit vicenasobne tridy stylem class="trida1 trida2". Kdyz se naucite jQuery (jquery.com) konstrukci $('.trida1') dostanete pole prvku ktere jsou (i) dane tridy.
Joker
Profil
Dero
Dobrým řešením by bylo použití kolekce document.getElementsByTagName("*") pro všechny ostatní prohlížeče než IE.
Ale zdá se, že to funguje i pro IE6 a IE7

Akorát je zajímavé, že document.getElementsByTagName("*").length vrací v IE jinou hodnotu než v Opeře a Firefoxu.
Toto téma je uzamčeno. Odpověď nelze zaslat.