Autor Zpráva
Homeboy
Profil *
Mám tag <ul>, vněmž může být libovolný počet tagů <li> pro každou stránku. Aby tento skript byl použitelný na více stránkách a nemusel ho hned upravovat pro každou potřeboval bych zjistit tento počet. Jde to nějak?
LuBoss
Profil *
napriklad keby si mal pri tom tagu <ul> definovane nejake ide cize <ul id="myList"> ... tak potom pocet jeho potomkov v tomto pripade tych tagov <li> zistis javascriptom napr. takto var p = document.getElementById("myList").childNodes.length
Homeboy
Profil *
<ul id="myList">
<li>Nový produkt</li>
<li>Seznam produktů</li>
</ul>
<script language="javascript">
	alert(document.getElementById("myList").childNodes.length);
</script>


Tohle mi však vyhodí že je počet 5? jak je to možný
los
Profil *
Kolekcia ul.childNodes obsahuje všetky detské uzly, t.j. aj textové uzly. Ak z nej chceš zistiť iba počet elementov, musíš ich spočítať v cykle (nejako takto: for (var i = 0, count = 0; i < ul.childNodes.length; ++i) if (ul.childNodes[i].nodeType == 1) ++count;)

Prípadne môžeš použiť ul.getElementsByTagName("li"). Takáto kolekcia obsahuje všetky vnorené elementy li, čiže aj také, ktoré sú napr. vo vnorenom zozname.
LuBoss
Profil *
no v MSIE by ti to vyhodilo 2, avsak firefox tam vytvara textove uzly, tam kde zalomujes riadok, takze aby ti to fungovalo aj inde ako v MSIE by si to musel mat dako takto:

<ul id="myList"><li>Nový produkt</li><li>Seznam produktů</li></ul>
<script language="javascript">
	alert(document.getElementById("myList").childNodes.length);
</script>
peta
Profil
LuBoss
jo, protoze jeden z prohlizecu pocita nove radky jako textNode

obj.getElementsBytagName('LI')
jebo to tve, ale musis pridat IF na obj.tagName=='LI'

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:

Prosím používejte diakritiku a interpunkci.

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

0