Avatar billede ras2000 Nybegynder
03. februar 2001 - 17:14 Der er 10 kommentarer og
1 løsning

children[n]

Jeg skal bruge en kodestump der kan ændre en egenskab i alle \'børnene\' i en container. Jeg ved det kan lade sig gøre, men jeg kan ikke få det til at virke. Er der nogen der er klogere end mig? Helt specifikt skal det være en menu der folder sig sammen/ud når man klikker på punkterne. ALtså
<ul>
  <li>A</li>
  <li onclick=\"udvid(this)\">B</li>
    <ul>
      <li style=\"display:none\">et skjult punkt der vises når der klikkes på B</li>
    </ul>
  <li>C</li>
</ul>
Koden skal så kunne ændre display fra none til block for alle børnene af \'this\', men ikke børnebørnene. Lidt ala
function udvid(element) {
  for (i=0; i==antal børn i element; i ++) {
  element.child[n].style.display = \'block\';
  }
}
Avatar billede nixen Nybegynder
03. februar 2001 - 17:30 #1
hvad med
function udvid(el) {
for (var i in el.children) el.children[i].style.display=\'block\' // eller \'\'
}
virker vist ikke i NS4.x og er utestet, men burde fungere, i IE + NS6
Avatar billede ras2000 Nybegynder
03. februar 2001 - 17:44 #2
Den kommer med en fejl meddelse
children[...].style er ikke et objekt
Her er hele koden:
<html>
<head>
<title>her er det så</title>
<script type=\"text/javascript\">
function udvid(el) {
for (var i in el.children) el.children[i].style.display=\'block\' // eller \'\'
}
</script>
</head>
<body>
her er listen
<ul>
  <li>A</li>
  <li onclick=\"udvid(this)\">B</li>
    <ul>
      <li style=\"display:none\">et skjult punkt der vises når der klikkes på B</li>
    </ul>
  <li>C</li>
</ul>

</body>
</html>
Avatar billede ras2000 Nybegynder
03. februar 2001 - 18:14 #3
hvis jeg prøver med koden
function udvid(el) {
if (el.children[0].style.display==\'none\') {
    el.children[0].style.display=\'block\';
    }
else {
    el.children[0].style.display=\'none\';
    }
}
Virker den heller ikke. Den kommer ikke med nogle fejl, men der sker heller ikke noget. Jeg fatter altså ikke det children[]. Det ville ellers spare mig en masse kode.
Avatar billede ras2000 Nybegynder
03. februar 2001 - 18:19 #4
Nå, der er åbenbart ikke så mange der gider sidde og nørde på en lørdag aften. Jeg logger af, og kigger ind igen imorgen. Håber der er nogen der kan forklare mig det.
Avatar billede nixen Nybegynder
03. februar 2001 - 20:12 #5
prøv med det her:
<script type=\"text/javascript\">
function pushed(el) {
    for (var i=0; i<el.children.length; i++) el.children[i].style.display=el.children[i].style.display==\'none\'?\'\':\'none\'
}
</script>
</head>
<body>
her er listen
<ul>
  <li>A</li>
  <li onclick=\"pushed(this)\">B</li>
    <ul style=\"display:none\">
      <li>et skjult punkt der vises når der klikkes på B</li>
    </ul>
  <li>C</li>
</ul>

jeg havde glemt to ting:
1) du skal sætte display til none på den UL der er indenunder, naturligvis ikke den næste li, da li2 er barnebarn af li1 og ikke barn.
2) brug \"for(i=0; i<el.children.length; i++)\" da egenskaben length er med i \"for(i in el.children)\"
Derudover har jeg lavet den så den folder sammen når man trykker på den igen. :-)
Avatar billede nixen Nybegynder
03. februar 2001 - 20:14 #6
ups - i for løkken er det (efter spørgsmålstegnet) to enkeltplinger, ikke et anførselstegn; det er da vist lidt svært at se..
Avatar billede ras2000 Nybegynder
03. februar 2001 - 22:53 #7
Hm, det virker fint, lige bortset fra at børnebørnene også bliver ramt. Det virker jo kun i et niveau. Men det hører vel med at børnene arver deres forældres egenskaber.
Avatar billede nixen Nybegynder
04. februar 2001 - 17:46 #8
øhh.. nej det bør de da ikke gøre.. prøv evt. at sætte egenskaber på alle objekterne ved onload() -ellers må du lige poste din kode..
Avatar billede ras2000 Nybegynder
05. februar 2001 - 11:07 #9
Det var vist også noget sludder jeg fik skrevet. Det der kom bag på mig, var at når jeg klikkede på et underpunkt, så foldede det sammen igen. Nu tror jeg jeg skal have lidt at vide om parents. SÅ vil jeg lægge et span ind i li\'en, som får forældrenes børn til at vises. Har du styr på dem? Jeg vil gerne kaste 30 point mere efter det. Noget af denne stil
<script type=\"text/javascript\">
function pushed(el) {
    for (var i=0; i<el.children.length; i++) el.children[i].style.display=el.children[i].style.display==\'none\'?\'\':\'none\'
}
</script>
</head>
<body>
her er listen
<ul>
  <li>A</li>
  <li><span onclick=\"pushed(parent.this)\">B</span></li>
    <ul style=\"display:none\">
      <li><span onclick=\"pushed(parent.this)\">et skjult punkt der vises når der klikkes på B</span></li>
        <ul style=\"display:none\">
          <li>endnu et underpunkt</li>
        </ul>
      <li>et skjult punkt der vises når der klikkes på B</li>
      <li>et skjult punkt der vises når der klikkes på B</li>
      <li>et skjult punkt der vises når der klikkes på B</li>
      <li>et skjult punkt der vises når der klikkes på B</li>
      <li>et skjult punkt der vises når der klikkes på B</li>
    </ul>
  <li>C</li>
</ul>

Avatar billede ras2000 Nybegynder
05. februar 2001 - 11:09 #10
Jeg lægger det ud som et nyt spørgsmål, jeg har lidt travlt.
Avatar billede ras2000 Nybegynder
07. februar 2001 - 10:47 #11
Jeg ved ikke om du stadig følger med i det her spørgsmål, men jeg tænkte du måske ville se det færdige resultat. Det er blevet helt ok synes jeg.
http://www.mur-tag.dk/muc/ny_side_1.htm
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