Avatar billede tblaster Nybegynder
13. marts 2004 - 12:59 Der er 32 kommentarer og
1 løsning

Expanding + Collapsing + expand/collaps all

Hejsa

Jeg skal have lidt hjælp med at få lavet en funktion der gør at jeg ved et tryk på et billed kan få vist en <div> tekst. Trykker man på billedt igen skal billedet skjules.

Desuden skal man kunne trykke for at få udvidet alle poster og yderliger skal det billed man trykker på ændre sig så det passer alt efter om man får vist posten eller ej. Billederne er som følgende:

    ImageStien_up = "pics/triup.gif"
    ImageStien_down = "pics/tridown.gif"

Javascript funktionen skal laves så den kan inkluderes vha. en js fil.

Jeg giver de mange point for et svar det løser min opgave ikke til et svar som kommer med et eksempel som jeg så skal tilpasse for dette har jeg prøvet og det kan jeg ikke få det til at virke.

Jeg har fudnet nedenstående side som har nøjagtig det jeg skal bruge men jeg kan ikke få det til at virke i en js fil hvor jeg kan åbne/lukk enkelte poster eller åbne/lukke dem alle. Eksemplet benytter underkategorier også dette skal jeg ikke bruge.

http://www.heartprofit.com/www/wc.dll?www~Test_Outlines

Jeg håber der er nogen der kan hjælpe!
Avatar billede roenving Novice
13. marts 2004 - 14:49 #1
Ikke bearbejdet til præcis dit formål, men tag et kig, og fortæl, om det er i den retning du vil !-)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.menupunkt{font-family:tahoma,verdana,arial,sans-serif;cursor:pointer;color:#9d52be;background:#fff;font-weight:800;font-style:italics;font-size:10px;width:250px;}
.menu{display:none;padding-left:5px;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:red}
.menu a:active{color:red}

</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}
</script>
</head>
<body>
<div id="omenu1" class="menupunkt" onclick="showMenu(this);">
<img id="omenu1pic" src="pics/tridown.gif" height="10" width="10">
Punkt 1
  <div id="menu1" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu2" class="menupunkt" onclick="showMenu(this);">
<img id="omenu2pic" src="pics/tridown.gif" height="10" width="10">
Punkt 2
  <div id="menu2" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu3" class="menupunkt" onclick="showMenu(this);">
<img id="omenu3pic" src="pics/tridown.gif" height="10" width="10">
Punkt 3
  <div id="menu3" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu4" class="menupunkt" onclick="showMenu(this);">
<img id="omenu4pic" src="pics/tridown.gif" height="10" width="10">
Punkt 4
  <div id="menu4" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu5" class="menupunkt" onclick="showMenu(this);">
<img id="omenu5pic" src="pics/tridown.gif" height="10" width="10">
Punkt 5
  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
</body>
</html>
Avatar billede tblaster Nybegynder
13. marts 2004 - 15:11 #2
Det lignet noget af det jeg gerne vil have men jeg skal kunne folde alle ud ved at trykke på et link.
Avatar billede roenving Novice
13. marts 2004 - 15:24 #3
Bare starten !-)

<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}
var collapsed = true;
function collapseExpandAll(){
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0){
      divs[i].style.display=(collapsed)?'block':'none';
      document.getElementById('o'+divs[i].id+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
    }
  }
  collapsed = !collapsed
}
</script>
</head>
<body>
<button onclick="collapseExpandAll();">Expand / Collapse All</button>
<div id="omenu1" class="menupunkt" onclick="showMenu(this);">
Avatar billede tblaster Nybegynder
13. marts 2004 - 15:34 #4
So far so good ... men billederne vises ikke ... og desuden skal Expand / Collapse All også være en af billederne som skifer billed når man trykker på den men det er jo en mindre sag ... hvorfor vises billederne ikke?
Avatar billede roenving Novice
13. marts 2004 - 15:35 #5
Er der billeder på fra start ?-)
Avatar billede tblaster Nybegynder
13. marts 2004 - 16:08 #6
nope
Avatar billede roenving Novice
13. marts 2004 - 16:09 #7
Så må der være en fejl i adressen på billederne ...

ligger de f.eks. i en søster-mappe skal du:

../pics/triup.gif
Avatar billede tblaster Nybegynder
13. marts 2004 - 16:23 #8
de ligger i en undermappe i forhold til hvor jeg har smidt min fil
Avatar billede roenving Novice
13. marts 2004 - 16:28 #9
Du kan også prøve med et punktum mindre (så betyder det denne mappe !-)

./pics/triup.gif
Avatar billede tblaster Nybegynder
13. marts 2004 - 17:03 #10
Ups ... det var fordi billedet var for stort iforhold til de størrelser du havde angivet ... nu er det rettet ... hvordan skal vis knappen så laves så den også folder sig ud og ind?
Avatar billede roenving Novice
13. marts 2004 - 17:10 #11
-- og igen bare det sidste af scriptet og det første af koden (linket kan du evt. udelade !-)

var collapsed = true;
function collapseExpandAll(){
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0){
      divs[i].style.display=(collapsed)?'block':'none';
      document.getElementById('o'+divs[i].id+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
    }
  }
  document.getElementById('exColAll').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
  collapsed = !collapsed
}
</script>
</head>
<body>
<img id="exColAll" src="pics/tridown.gif" onclick="collapseExpandAll();" alt="Expand / Collapse All">&nbsp;<a href="#" onclick="collapseExpandAll();return false">Expand / Collapse All</a>
<div id="omenu1" class="menupunkt" onclick="showMenu(this);">
Avatar billede tblaster Nybegynder
13. marts 2004 - 18:04 #12
Nu prøver jeg så at få det over og køre i min kode og her får jeg problemer.
Jeg har delt koderne op i følgende:
FoldOutMenu.js:
----------------
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}
var collapsed = true;

function collapseExpandAll(){
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0){
      divs[i].style.display=(collapsed)?'block':'none';
      document.getElementById('o'+divs[i].id+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
    }
  }
  document.getElementById('exColAll').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
  collapsed = !collapsed
}
--------------------------
Og ellers følgende på den anden side:
--------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.menupunkt{font-family:tahoma,verdana,arial,sans-serif;cursor:pointer;color:#9d52be;background:#fff;font-weight:800;font-style:italics;font-size:10px;width:250px;}
.menu{display:none;padding-left:5px;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:red}
.menu a:active{color:red}

</style>
<SCRIPT language=JavaScript src="FoldOutMenu.js"></SCRIPT>
</head>
<body>
<div id="omenu1" class="menupunkt" onclick="showMenu(this);">
<img id="omenu1pic" src="pics/tridown.gif">
Punkt 1
  <div id="menu1" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu2" class="menupunkt" onclick="showMenu(this);">
<img id="omenu2pic" src="pics/tridown.gif">
Punkt 2
  <div id="menu2" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu3" class="menupunkt" onclick="showMenu(this);">
<img id="omenu3pic" src="pics/tridown.gif">
Punkt 3
  <div id="menu3" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu4" class="menupunkt" onclick="showMenu(this);">
<img id="omenu4pic" src="pics/tridown.gif">
Punkt 4
  <div id="menu4" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
<div id="omenu5" class="menupunkt" onclick="showMenu(this);">
<img id="omenu5pic" src="pics/tridown.gif">
Punkt 5
  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>


</head>
<body>
<img id="exColAll" src="pics/tridown.gif" onclick="collapseExpandAll();" alt="Expand / Collapse All">&nbsp;<a href="#" onclick="collapseExpandAll();return false">Expand / Collapse All</a>
<div id="omenu1" class="menupunkt" onclick="showMenu(this);">

--------------------------

Dette virker fint men hvis jeg prøver at kæde det sammen med mit får jeg problemer.
På min egen side laver jeg mine div felter således:
        Str = str & "<DIV id=""" & Counter & "Parent"">"
        str = str & "<SPAN class=brod>Løsning</Span>"
        str = str & "</DIV>"

        str = str & "<DIV class=""child"" id=""el" & Counter & "Child"">"
        Str = Str & "<SPAN class=brod><br>" & DB_Svar & "</Span>"
        str = str & "</DIV><br>"

Jeg skal altså gerne have hjælp til at rette js filen til så den virker på min side. Desude skal jeg vel have noget stylesheet på side også men hvormeget at det du skrev og er det ikke muligt at smide det i js filen også?
Avatar billede roenving Novice
13. marts 2004 - 18:21 #13
For det første skal du have orden i dine tags, så du ikke flere gange har </head><body> !-)

-- og så vil jeg gætte på, at din Counter er et tal, og du må _ikke_ bruge tal som første tegn i en javascript-identifier, så det er en potentiel fejl-kilde ...

Så har jeg lavet en simpel mekanisme til at sammenkæde menupunkter med undermenuer, nemlig at de har (næsten !-) samme id, så jeg kan finde nummeret ved at kigge på den 5. karakter og videre, men hvis du gør følgende skulle det kunne du:

        Str = str & "<DIV id="Parent"" & Counter & """>"
        str = str & "<img id="Parent"" & Counter & ""pic" src="pics/tridown.gif">
        str = str & "<SPAN class=brod>Løsning</Span>"
        str = str & "</DIV>"

        str = str & "<DIV class=""child"" id=""el" & Counter & "Child"">"
        Str = Str & "<SPAN class=brod><br>" & DB_Svar & "</Span>"
        str = str & "</DIV><br>"
<img id="omenu5pic" src="pics/tridown.gif">


-- og så er der en linje i koden, som ser sådan ud:

  var id = d.id.substring(5);

-- der skal 5-tallet ændres til et 6-tal:

  var id = d.id.substring(6);

-- og de to steder, hvor der i koden står:

divs[i].id.indexOf('menu')==0

skal det ændres til:

divs[i].id.indexOf('el')==0

-- bemærk at det sidste er som en del af nogle if-sætninger !-)

-- og til sidst skal denne linje ændres:

      document.getElementById('o'+divs[i].id+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";

-- til:

      document.getElementById('Parent'+divs[i].id.match(/\d+/)[0]+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
Avatar billede tblaster Nybegynder
13. marts 2004 - 18:30 #14
Jeg glemte følgende til min parent:
        Str = str & "</td><td>"
        Str = str & "</td><td><A onClick=""expandIt('el" & Counter & "'); return false""><IMG height=""11"" alt="""" src=""pics/tridown.gif"" width=""11"" align=""middle"" border=""0""></A></td></tr>"
       

Men prøver lige med det du skrev
Avatar billede tblaster Nybegynder
13. marts 2004 - 18:42 #15
Nu har jeg ændret til føglende:

    Str = Str & "<img id=""exColAll"" src=""pics/tridown.gif"" onclick=""collapseExpandAll();"">&nbsp;<a onclick=""collapseExpandAll();return false"">Expand / Collapse All</a>"

...

    Str = Str & "<td>"
        Str = str & "<DIV id=""Parent" & Counter & ">"
        str = str & "<SPAN class=brod>Løsning</Span>"
        Str = str & "</td><td>"
        Str = str & "</td><td><A onClick=""showMenu('this'); return false""><IMG height=""11"" alt="""" src=""pics/tridown.gif"" width=""11"" align=""middle"" border=""0""></A></td></tr>"
        str = str & "</DIV>"

...

        str = str & "<DIV class=""child"" id=""el" & Counter & "Child"">"
        Str = Str & "<SPAN class=brod><br>" & DB_Svar & "</Span>"
        str = str & "</DIV><br>"


-------------------------------
function showMenu(d){
  var id = d.id.substring(6);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}
var collapsed = true;

function collapseExpandAll(){
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0){
      divs[i].style.display=(collapsed)?'block':'none';
      document.getElementById('Parent'+divs[i].id.match(/\d+/)[0]+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
    }
  }
  document.getElementById('exColAll').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
  collapsed = !collapsed
}
------------------------------------

Men dette gør at jeg ikke får vist teksten Løsning. Og trykker man på bileldet som viese ved løsning sker der ikke noget. Trykker man på Expand / Collapse All får man følgende:
document.getElementById(...) er nu eller ikke et objekt
Avatar billede tblaster Nybegynder
13. marts 2004 - 19:34 #16
Nu har jeg fået den til at vise teksten Løsning og når man trykker på billedet udforan løsning så får jeg denne fejl:
'id' er null eller ikke et objekt

Her er min nye "Parent":

        Str = str & "<DIV id=""Parent" & Counter & """>"
        str = str & "<SPAN class=brod>Løsning</Span>"
        Str = str & "</td><td>"
        Str = str & "</td><td><A onClick=""showMenu('this'); return false""><IMG height=""11"" alt="""" src=""pics/tridown.gif"" width=""11"" align=""middle"" border=""0""></A>"
        str = str & "</DIV>"
Avatar billede roenving Novice
13. marts 2004 - 19:38 #17
Der er noget voldsomt rod med de der td-tags ??

        Str = str & "<DIV id=""Parent" & Counter & """ onClick=""showMenu('this');"">"
        str = str & "<SPAN class=brod>Løsning</Span>"
        Str = str & "<IMG height=""11"" alt="""" src=""pics/tridown.gif"" width=""11"" align=""middle"" border=""0"">"
        str = str & "</DIV>"
Avatar billede tblaster Nybegynder
13. marts 2004 - 19:43 #18
jeg havde glemt følgende ved mit billed: id=""Parent" & Counter & "pic"" ... dette gør at min vis alle virker men jeg har stadig 2 problemer:

1. Alle mine div childs vises til at starte med
2. Min vis løsning for en enkelt child melder fejl : "'id' er null eller ikke et objekt"
Avatar billede tblaster Nybegynder
13. marts 2004 - 19:44 #19
meningen er at man trykker på billedet for at aktiver showMenu ...
Avatar billede tblaster Nybegynder
13. marts 2004 - 19:53 #20
fejlen med id er null eller ikke et objekt meldes i denne linje:
  var id = d.id.substring(6);
Avatar billede roenving Novice
13. marts 2004 - 19:59 #21
Selvfølgelig, for hvis du har clicket på et a-tag, som ligger inde i en td, som ikke er der, vil this jo ikke henvise til det objekt, som indeholder id'et !o]

Derfor prøvede jeg at vise hvordan du fik click på både billede og tekst (ved at placere den på div'en, som også har id'et !-)

-- og det med childs vises fra start klarer du i stylesheetet:

.child{
/*noget, du har i forvejen*/
display:none;
}
Avatar billede tblaster Nybegynder
13. marts 2004 - 20:05 #22
Hvis jeg smider den på min div så får jeg samme fejl ("'id' er null eller ikke et objekt"). Min div tag ser således ud:
        Str = str & "<DIV id=""Parent" & Counter & """ onClick=""collapseExpand('this');"">"
        str = str & "<SPAN class=brod>Løsning</Span>"
        Str = str & "</td><td>"
        Str = str & "</td><td><A return false""><IMG id=""Parent" & Counter & "pic"" height=""11"" alt="""" src=""pics/tridown.gif"" width=""11"" align=""middle"" border=""0""></A>"
        str = str & "</DIV>"

Og min expand funktion:
function collapseExpand(d){
  var id = d.id.substring(6);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0&&divs[i].id!='Parent'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('Parent'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}

Mit problem med at mine childs blev vist er nu løst!
Avatar billede roenving Novice
13. marts 2004 - 20:24 #23
Det har jeg svært ved at forstå ...

Hvis du viser kilden ser den del af koden så ikke sådan ud ?-)

<DIV id="Parent3" onClick="collapseExpand('this');">

-- og så lige nogle andre detaljer:

function collapseExpand(d){
  var id = d.id.substring(6);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0){//noget er blevet overflødigt
      divs[i].style.display='none';
      //og her var der en gammel udgave !-)
      document.getElementById('Parent'+divs[i].id.match(/\d+/g)[0]+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('Parent'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}
Avatar billede tblaster Nybegynder
14. marts 2004 - 11:47 #24
Min parent ser således ud:
<DIV id="Parent1" onClick="collapseExpand('this');">
..
<IMG  id=" parent1pic " height=" 11 " alt=" " src="pics/tridown.gif" width=" 11 " align=" middle " border=" 0 ">
...
</DIV>

Jeg har lavet de ændringer du skrev men det gør ingen forskel!
Avatar billede roenving Novice
14. marts 2004 - 13:07 #25
Parent1pic !-)

Bemærk at javascript er case sensitivt på ethvert niveau ...

-- og det er ikke nogen god idé at have løse mellemrum inde i strenge, som bl.a. skal bruges som variable !o]
Avatar billede tblaster Nybegynder
14. marts 2004 - 17:58 #26
Ved ikke lige hvad der skete med overstående ... her er det jeg får udskrevet:
<DIV id="Parent1" onClick="collapseExpand('this');">
<SPAN class=brod>Løsning</Span>
...
IMG id="Parent1pic" height="11" alt="" src="pics/tridown.gif" width="11" align="middle" border="0">
</DIV>

min id til min Parent1pic er altså ens med min Parent1

Desuden er der i den nye ikke mellemrum ... ved ikke hvor de lige kom fra!

Jeg har en ide ... her giver jeg dig det jeg har i html ... det må gøre det en del nemere at finde frem til hvor fejlen er:

-----------------------------------------------------------------
<SCRIPT language=JavaScript src="FoldOutMenu.js"></SCRIPT>
<TABLE width="100%">
    <TD>
        <DIV id="Parent1" onClick="collapseExpand('this');"><SPAN class="brod">Løsning</SPAN>
    </TD>
    <TD><IMG id="Parent1pic" height="11" alt="" src="pics/tridown.gif" width="11" align="middle" border="0">
    </DIV>
    </TD>
</TABLE>

<DIV class="child" id="el1Child">
<SPAN class="brod"><BR>En muldvarp på motorcykel!</SPAN>
</DIV>
-----------------------------------------------------------------
function collapseExpand(d){
  var id = d.id.substring(6);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0){
      divs[i].style.display='none';
      document.getElementById('Parent'+divs[i].id.match(/\d+/g)[0]+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('Parent'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}

var collapsed = true;

function collapseExpandAll(){
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0){
      divs[i].style.display=(collapsed)?'block':'none';
      document.getElementById('Parent'+divs[i].id.match(/\d+/)[0]+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
    }
  }
  document.getElementById('exColAll').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
  collapsed = !collapsed
}

with (document)
{
    write("<STYLE TYPE='text/css'>");
    write(".child {");
    write("display:none;");
    write("margin-left:0;");
    write("}");
    write("</STYLE>");
}
-----------------------------------------------------------------

Håber det kan hjælpe til at få løst problemet!
Avatar billede roenving Novice
14. marts 2004 - 18:22 #27
Du laver en ulovlig nesting her:

<TABLE width="100%">
    <TD>
        <DIV id="Parent1" onClick="collapseExpand(this);"><SPAN class="brod">Løsning</SPAN>
    </TD>
    <TD><IMG id="Parent1pic" height="11" alt="" src="pics/tridown.gif" width="11" align="middle" border="0">
    </DIV>
    </TD>
</TABLE>

-- en div (eller et hvilket som helst andet element for den sags skyld !-) kan ikke starte i en celle og slutte i en anden ...

-- men du kan jo bare fjerne tabellen, da det vil blive som du ønsker uden tabellen:

<DIV id="Parent1" onClick="collapseExpand('this');"><SPAN class="brod">Løsning</SPAN>
<IMG id="Parent1pic" height="11" alt="" src="pics/tridown.gif" width="11" align="middle" border="0"></DIV>

-- hvis det er fordi, du vil have billederne på et bestemt sted over hinanden kan du jo smide en div i stedet for span'en, give den en bestemt bredde og lave en float:left på !-)

-- og der var jo den væsentlige fejl, at this _ikke_ er en tekst, men en variabel (her et reserveret ord) som henviser til noget andet !-)

En test, som virker (jeg brugte ikke et eksternt script, men det kan du vel sagtens ændre !-)

<script type="text/javascript">
function collapseExpand(d){
  var id = d.id.substring(6);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0&&divs[i].id.indexOf('el'+id)!=0){
      divs[i].style.display='none';
      document.getElementById('Parent'+divs[i].id.match(/\d+/g)[0]+'pic').src = "pics/tridown.gif";
    }
  }
  st = document.getElementById('el'+id+'Child').style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}

var collapsed = true;

function collapseExpandAll(){
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0){
      divs[i].style.display=(collapsed)?'block':'none';
      document.getElementById('Parent'+divs[i].id.match(/\d+/)[0]+'pic').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
    }
  }
  document.getElementById('exColAll').src = (collapsed)?"pics/triup.gif":"pics/tridown.gif";
  collapsed = !collapsed
}

with (document)
{
    write("<STYLE TYPE='text/css'>");
    write(".child {");
    write("display:none;");
    write("margin-left:0;");
    write("}");
    write("</STYLE>");
}
</script>

<DIV id="Parent1" onClick="collapseExpand(this);"><SPAN class="brod">Løsning</SPAN>
<IMG id="Parent1pic" height="11" alt="" src="pics/tridown.gif" width="11" align="middle" border="0"></DIV>

<DIV class="child" id="el1Child">
<SPAN class="brod"><BR>En muldvarp på motorcykel!</SPAN>
</DIV>
Avatar billede tblaster Nybegynder
14. marts 2004 - 18:38 #28
så er vi ved at være der ... nu virker min div til at åbne en enkelt child fint ... men men men ... problemet er at hvis man åbner en enkelt child og så derefter åbner en anden child, så lukkes den første. Der kan altså kun være en child åben ad gangen medmindre at man bruger collapseExpandAll(). Det skal jo gerne være sådan at dem man har åbnet forbliver åbne selvom man åbner flere.
Avatar billede roenving Novice
14. marts 2004 - 18:41 #29
Okay, så er det jo en anden funktionalitet, som er indbygget i den ...

-- den må vi jo så ændre !-)

function collapseExpand(d){
  var id = d.id.substring(6);
/*  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('el')==0&&divs[i].id.indexOf('el'+id)!=0){
      divs[i].style.display='none';
      document.getElementById('Parent'+divs[i].id.match(/\d+/g)[0]+'pic').src = "pics/tridown.gif";
    }
  }*/
  st = document.getElementById('el'+id+'Child').style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"pics/triup.gif":"pics/tridown.gif";
}
Avatar billede tblaster Nybegynder
14. marts 2004 - 18:49 #30
Det er jo bare perfekt ... så fik vi det løst! Smid et svar ...

Tusinde tak for hjælpen!
Avatar billede roenving Novice
14. marts 2004 - 19:07 #31
Velbekomme '-)
Avatar billede roenving Novice
06. april 2004 - 17:30 #32
-- og tak for points ;~}
Avatar billede grace45 Nybegynder
22. oktober 2010 - 19:16 #33
Hej min kære,
Hvordan har du i dag, jeg håber, at alle er godt med dig. Jeg er ked af at bekymre dig med min Forslag til et forhold med dig, men jeg ved, at du vil imødekomme min anmodning i god tro og forståelse. Jeg har brug for dig i forretningsbetingelser og rådgive. Mit navn er Grace Dabah jeg bare gik gennem din profil har ingen andre muligheder end at lade dig vide, at jeg er interesseret i at have et forhold med dig, vil jeg også gerne vide dig mere, kan du sende en mail til min e-mail adresse (grace_11dabah @ yahoo.com), så jeg kan sende dig flere oplysninger om mig selv inklusive mit billede. Jeg tror, vi kan gå herfra. Men huske på, at kærlighed ikke har nogen farver barriere, ingen uddannelsesmæssige tilbage jorden barriere, ingen socio-økonomiske barrierer, religiøse, sprog, nationalitet eller afstand hindring, det eneste vigtige der er kærlighed. Jeg venter på din mail til min e-mail adresse ovenfor.
Med venlig hilsen,
Miss Grace.
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