Avatar billede hkb-x Nybegynder
30. juli 2008 - 13:08 Der er 13 kommentarer og
1 løsning

find tags i tag

hvis jeg nu har en liste <ul> og gerne, via javascript, vil finde ud af hvor mange punkter jeg har i min liste <li> hvordan gør jeg så det?

Altaå hvordan kan jeg ved javascript finde antallet af tags i et andet tag?
Avatar billede fennec Nybegynder
30. juli 2008 - 13:13 #1
En måde:

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function getListCount(fElementID)
{
    //fElementID.getElementsByTagName("li")
    alert(fElementID.getElementsByTagName("li").length)
}
//-->
</SCRIPT>

<ul id="test1">
    <li>fkjvfd</li>
    <li>fkjvfd</li>
    <li>fkjvfd</li>
</ul>

<ul id="test2">
    <li>fkjvfd</li>
    <li>fkjvfd</li>
    <li>fkjvfd</li>
    <li>fkjvfd</li>
    <li>fkjvfd</li>
</ul>

<input type="Button" value="1. klik" onClick="getListCount(document.getElementById('test1'));return false;"><br>
<input type="Button" value="2. klik" onClick="getListCount(document.getElementById('test2'));return false;"><br>
Avatar billede montago Praktikant
30. juli 2008 - 13:31 #2
Nu har jeg ikke lige lavet en benchmark af det....

men burde node.Childen.length ikke være "bedst" om ikke andet en lille tand nemmere ;-)

dvs.

document.getElementById("test1").childNodes.length
Avatar billede montago Praktikant
30. juli 2008 - 13:33 #3
det hele afhænger jo af om man skal have alle elementer af typen N eller bare ALLE elementer i children-laget ...
Avatar billede fennec Nybegynder
30. juli 2008 - 13:52 #4
montago >>
Jo, det har du da ret i. Hvorfor fik jeg ikke den tanke :o)
Avatar billede w13 Novice
30. juli 2008 - 13:56 #5
Og hvis det også skulle gælde tags i tags i tags og tags i tags i tags i tags, så kan du bruge:

document.getElementById("test1").getElementsByTagName("*").length;

:P
Avatar billede montago Praktikant
30. juli 2008 - 14:51 #6
hehe...
w13...

Jeg sad lige og kiggede efter X-Path modparten til "descendant", men den findes ikke... :-(

forstår ikke hvorfor XML-DOM ikke har lavet metoder til alle X-Path axes.
Avatar billede montago Praktikant
30. juli 2008 - 14:59 #7
det værste er dog, at man ikke kan prototype sig til den uden at skulle HTC sig igennem ild og vand....

i Firefox:

HTMLElement.protoype.descendant = function(){
  return this.getElementsByTagName("*")
}

HTMLElement.protoype.descendantOrSelf = function(){
  return this.getElementsByTagName("*").push(this)
}

MUHAHAHAHA
Avatar billede w13 Novice
30. juli 2008 - 15:02 #8
Hehe. :) Ja.

Så bare lige med "t" foran "ype". =P
Avatar billede montago Praktikant
30. juli 2008 - 15:13 #9
ihh... kan ikke få ..OrSelf() til at virke :-(
men den anden gør dog:

HTMLElement.prototype.descendant = function(){
  return this.getElementsByTagName("*")
}

byid("test1").descendant().length
Avatar billede hkb-x Nybegynder
30. juli 2008 - 15:20 #10
@fennec

danke. kast svar for point.


og til jer andre; tak for hjælpen der er mange gode løsninger.
Avatar billede fennec Nybegynder
30. juli 2008 - 15:32 #11
.o) <-- One Eyed Jack
Avatar billede olebole Juniormester
30. juli 2008 - 22:19 #12
<ole>

document.getElementById("test1").childNodes returnerer ikke child-elements, men child-nodes - dvs. også tekstnoder som f.eks. linjeskift (selvom browserne ikke er enige om fortolkningen).
    ELEMENT.getElementsByTagName("*");

- bør således ikke nødvendigvis resultere det samme som:
    ELEMENT.childNodes;

Mon ikke årsagen til, at XML-DOM'en ikke har metoder til alle X-Path axes, er nogenlunde tilsvarende den, som gør, at PHP ikke understøtter VBS-konstanter som f.eks. 'vbCrLf'?  =)

I den gamle HTML-DOM gav det rimelig mening at prototype på HTML-elementer (som jo var ganske alm. JS objekter) - men det giver ikke mening med XML-DOM, da der her ikke er tale om alm. JavaScript objects, men om DOMNodes. Derfor er det kun én browser, der tillader den slags

/mvh
</bole>
Avatar billede montago Praktikant
31. juli 2008 - 01:18 #13
"Mon ikke årsagen til, at XML-DOM'en ikke har metoder til alle X-Path axes, er nogenlunde tilsvarende den, som gør, at PHP ikke understøtter VBS-konstanter som f.eks. 'vbCrLf'?  =)"


rimelig dårlig sammenligning...

pointen med XML-DOM er jo at give metoder til at traverse noderne, eller at selecte dem - derfor synes jeg at .descendant() mangler...
Avatar billede olebole Juniormester
31. juli 2008 - 21:07 #14
- og det skal jeg ikke forhindre dig i  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester