Autor Zpráva
Suta
Profil
Pro přístup k pojmenovaným prvkům (prvkům s atributem name) můžu použít závorkové notace nebo metody namedItem(). Pokud prvky na stránce vyberu pomocí metody document.getElementsByTagName(), potom by na vráceném objektu typu HTMLCollection měla být dostupná metoda namedItem(). Bohužel tomu tak však není. Poradí mi někdo, kde hledat chybu?

images = document.images;
myImage = images.namedItem("nameValue");   // => v pořádku

images = document.getElementsByTagName("img");
myImage = images.namedItem("nameValue");   // => chyba
peta
Profil
Jsi cetl kde? Zkousel jsi prohlizece ktere vsechny? Zkousel jsi to na doctype jakem vsem?
FF
alert(document.getElementsByTagName); // vrati objekt typu HTMLCollection
alert(document.images); // vrati objekt obecneho typu
typeof() vraci na oboji objekt
Naopak, povazoval bych za chybne chovani, kdyby objekt z funkce prevzal z rodice vsechny funkce jako to dela document.images.
_es
Profil
peta:
alert(document.images); // vrati objekt obecneho typu
Nevráti, je to tiež HTML kolekcia.
Suta
Profil
peta:

Skutečně nefunguje v Chrome (v režimu quirks ani standards). Můžeš vyzkoušet, příčinu stále neznám.

Namátkou jsem zkusil IE a Firefox, tam vše funguje, jak má (díky za postrčení, nenapadlo mě, že co nefunguje v Chrome může jinde fungovat, moje blbost).

<html>
  <body>

  <img name="mojeJmeno">

  <script>
      images = document.images;
      myImage = images.namedItem("mojeJmeno");
          // => bez chyby v Google Chrome
          
      images = document.getElementsByTagName("img");
      myImage = images.namedItem("mojeJmeno");
          // => chyba v Google Chrome (Uncaught TypeError: Object #<a NodeList> has no method 'namedItem')
  </script>
  
  </body>
</html>

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:

0