Autor Zpráva
Ge0rge
Profil
getElementsByName v IE ani náhodnou. v FF ok ...

patrne tuto funci pouzivam blbe, ale vysvetlete mi prosim proc v msie nefunguje tento jednoduchy skript
resp. proc namisto pole onech divů vrací množinu prázdnou. v FF je to naprosto OK, v opere opet ne. jak jinak se mohu dostat k mnozine elementu oznacenych nejakou spolecnou znackou. Hodnota name se mi k tomu ucelu zdala idealni ...


<html>
<body>
<div id="test1" name="test">test</div>
<div id="test2" name="test">test</div>
<div id="test3" name="test">test</div>
<div id="test4" name="test">test</div>

<script type="text/javascript">
var mnozina = document.getElementsByName('test');
alert(mnozina); //vraci mnozinu objektu, explorer bohuzel prazdnou
alert(mnozina.length); //explorer = nula, firefox = 4
</script>
</body>
</html>

diky za nakopnuti


------------
p.s. jen jeste jeden poznatek, pokud namisto divu pouziji inputy ktere jsou oznaceny name="test" pak kupodivu i explorer se chytne a vrati v poli vsechny ctyri.. pak ovsem ale nechapu proc si funkce getElementByName hraje svym nazvem na jaksi univerzalni, kdyz se vlastne na vsechny elementy nevztahuje .... :-/.

Nemluve o tom ze inputy jsou mi v tomto pripade k nicemu protoze takto resim prochazeni dynamickym menu (resp. pocatecni skryvani vsech polozek menu nez je zobrazena ta prava dle sveho id)

---------
p.p.s. hm, domnivam se ze jsem nasel zakopaneho psa. Zda se tedy ze atribut name podle specifikace XHTML vubec neni pro element DIV povolen, cili ... asi tak. Ach jo .... nascesti nasel jsem jiste reseni ktere muj zamer plne uspokojilo. Jedna se o funkci getElementsByClassName, ktera sice neexistuje v zakladni vybavicce prohlizecu, ale staci kdyz jeji jmeno zadate do googlu a asi pochopite ze presto je velmi popularni :-) ted uz vim proc.
Joker
Profil
nechapu proc si funkce getElementByName hraje svym nazvem na jaksi univerzalni, kdyz se vlastne na vsechny elementy nevztahuje
To bude asi tím, že ne všechny prvky mají atribut name. Takže když takový <div> vůbec nemá atribut jménem "name", tak je potom těžké ho podle něj vybírat.

Stačí si ten kód hodit do validátoru a hned u těch <div>ů vyplivne hlášku, že atribut name neexistuje.
aSDASD
Profil *
No asi proto, že název elementu není hodnota jeho atributu name, ale NÁZEV elementu, tedy DIV.
Zbystr
Profil *
Necetl jsem ten prispevek cely, po ranu nejsem jeste nejak nastartovany, ale pokud pouzijes getElementsByTagName tak to jede vsude :)


aha melo to byt neco jineho ....
no udelej si vlastni fnc,

function getElementByName(name,parent){
     var output = Array();
     if (!parent) parent = document;
     var tags = parent.getElementsByTagName('*');
     for (i = 0; i<tags.length; i++){
          if (tags[i].name == name){
               output[output.length] = tags[i];
          }
     }
     return output;
}


muzes si to samozrejme napsat i jako implementace na element.

pokud pisu hovadiny, tak pardon, ale po vcerejsku vazne nejsem jeste ONLINE

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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