Avatar billede curriculum Nybegynder
18. maj 2004 - 13:55 Der er 13 kommentarer og
1 løsning

Ændring af pilens retning

Jeg har kodet noget javascript som kan vise en box (item description) nedunder en vare, når bruger klikker på varen. Foran varen i samme <TR> har jeg en "webdings" pil, som skal skifte retning alt efter om boxen vises eller ej...

Kan nogen ekspert hjælpe mig ?
'openAll' og 'closeAll' funktionerne fungerer fint.. bare ikke enkeltvis

Javascript koden:
                var arrs_array = new Array(<%=Arrows%>);       
   
                function displaySubs(the_sub){
                    if (the_sub=="openAll"){
                        for (i=0;i<subs_array.length;i++){
                            var my_sub = document.getElementById(subs_array[i]);
                            my_sub.style.display = "";
                            document.getElementById("arr"+i).innerHTML = '6';
                        }
                        document.getElementById("controlLayer").innerHTML = '<a href="java script:displaySubs(\'closeAll\')" class="headings">Goym upplýsingar.</a>';
                        return;
                    }
                    else if (the_sub=="closeAll"){
                        for (i=0;i<subs_array.length;i++){
                            var my_sub = document.getElementById(subs_array[i]);
                            my_sub.style.display = "none";
                            document.getElementById("arr"+i).innerHTML = '4';
                        }
                        document.getElementById("controlLayer").innerHTML = '<a href="java script:displaySubs(\'openAll\')" class="headings">Vís upplýsingar.</a>';
                        return;
                    }
                    else if (document.getElementById(the_sub).style.display==""){
                        document.getElementById(the_sub).style.display = "none";
                        return;
                    }
                    for (i=0;i<subs_array.length;i++){
                        var my_sub = document.getElementById(subs_array[i]);
                        my_sub.style.display = "none";
                        document.getElementById("arr"+i).innerHTML = '4';
                    }
                    document.getElementById(the_sub).style.display = "";

ASP koden:
For i=0 To Ubound()

& "<td Class=Item><SPAN Id=""arr" & i & """>4</SPAN>"_
& "<A HREF=""java script: void(0)"" onClick=""displaySubs('sub" & i+1 & "');"" onFocus=""if(this.blur)this.blur()"";>"_
Avatar billede curriculum Nybegynder
18. maj 2004 - 13:56 #1
P.S. innerHTML 4 er vandret pil og innerHTML 6 er lodret pil...
Avatar billede roenving Novice
18. maj 2004 - 15:02 #2
Er det måske fordi du med dine links reloader selve siden, så den altid kommer tilbage til start-tilstanden ?-)

document.getElementById("controlLayer").innerHTML = '<a href="#" onclick="displaySubs(\'closeAll\');return false;" class="headings">Goym upplýsingar.</a>';

document.getElementById("controlLayer").innerHTML = '<a href="#" onclick="displaySubs(\'openAll\');return false;" class="headings">Vís upplýsingar.</a>';

-- eller måske var det de fejl, der var i kaldene ...
Avatar billede curriculum Nybegynder
18. maj 2004 - 15:43 #3
controllayer (openAll og closeAll) funktionerne fungerer fint.
Det er <SPAN id=""arr.. >4, som skal skiftes ud til <SPAN id=""arr.. >6

Problemet er i denne metode:
else if (document.getElementById(the_sub).style.display==""){
  document.getElementById(the_sub).style.display = "none";
  return;
}
Avatar billede roenving Novice
18. maj 2004 - 15:51 #4
Men der er i hvert fald fejl i de linjer, jeg har skrevet om !-)

-- og den kommer vel aldrig ind i den linje, når den først kigger efter det ene og så det andet ?-)
Avatar billede roenving Novice
18. maj 2004 - 15:54 #5
Nå, jo, det gør den vel, men du sørger jo omhyggeligt for at den ikke kommer videre til resten af funktionen med return; ?-)
Avatar billede curriculum Nybegynder
18. maj 2004 - 16:07 #6
return'erne er okey, de stanser funktion de rigtige steder.
For at få en lodret pilen enkeltvis må:
document.getElementById("arr"+i).innerHTML = '6';
flettes ind i denne metode:
else if (document.getElementById(the_sub).style.display==""){
  document.getElementById(the_sub).style.display = "none";
  return;
}
Avatar billede roenving Novice
18. maj 2004 - 16:18 #7
Du skal så uddrage nummeret på den kaldende sub ting:

else if (document.getElementById(the_sub).style.display==""){
  document.getElementById(the_sub).style.display = "none";
  num = +the_sub.replace(/^sub(\d+)$/,"$1");
  for(i=0;num>=i;i++)document.getElementById("arr"+i).innerHTML = '6';
  return;
}

-- eller hvordan du nu ønsker det, for jeg har jo ikke gennemskuet hvad du har i din kode ...
Avatar billede curriculum Nybegynder
18. maj 2004 - 16:49 #8
der er intet ekstraordinært i koden, hele js koden er her. asp koden til den "drop down" box (document.getElementById(the_sub)) er ikke med, men den skulle ikke have indflydelse i den anden funktion (pilens retning)..
Avatar billede curriculum Nybegynder
18. maj 2004 - 16:59 #9
the_sub indeholder "sub"+tal (tal = loops)
hvordan kan jeg så hente tallet ud af the_sub variablen ? det vil være en start..
Avatar billede roenving Novice
18. maj 2004 - 17:10 #10
Det er jo det, jeg har skrevet i kode-eksemplet:

num = +the_sub.replace(/^sub(\d+)$/,"$1");
Avatar billede curriculum Nybegynder
18. maj 2004 - 17:34 #11
Den fungerer nu :)
                var subs_array = new Array(<%=Subs%>);
                var arrs_array = new Array(<%=Arrows%>);       
   
                function displaySubs(the_sub){
                    if (the_sub=="openAll"){
                        for (i=0;i<subs_array.length;i++){
                            var my_sub = document.getElementById(subs_array[i]);
                            my_sub.style.display = "";
                            document.getElementById("arr"+i).innerHTML = '6';
                        }
                        document.getElementById("controlLayer").innerHTML = '<a href="java script:displaySubs(\'closeAll\')" class="headings">Goym upplýsingar.</a>';
                        return;
                    }
                    else if (the_sub=="closeAll"){
                        for (i=0;i<subs_array.length;i++){
                            var my_sub = document.getElementById(subs_array[i]);
                            my_sub.style.display = "none";
                            document.getElementById("arr"+i).innerHTML = '4';
                        }
                        document.getElementById("controlLayer").innerHTML = '<a href="java script:displaySubs(\'openAll\')" class="headings">Vís upplýsingar.</a>';
                        return;
                    }
                    else if (document.getElementById(the_sub).style.display==""){
                        document.getElementById(the_sub).style.display = "none";
                        num = +the_sub.replace(/^sub(\d+)$/,"$1");
                        document.getElementById("arr"+(num-1)).innerHTML = '4';
                        return;
                    }
                    for (i=0;i<subs_array.length;i++){
                        var my_sub = document.getElementById(subs_array[i]);
                        my_sub.style.display = "none";
                        document.getElementById("arr"+i).innerHTML = '4';
                    }
                    document.getElementById(the_sub).style.display = "";
                    num = +the_sub.replace(/^sub(\d+)$/,"$1");
                    document.getElementById("arr"+(num-1)).innerHTML = '6';
                }
Avatar billede curriculum Nybegynder
18. maj 2004 - 17:36 #12
giv mig et svar roenving.. du hjalp mig nok til resultatet..
Avatar billede roenving Novice
18. maj 2004 - 17:37 #13
Velbekomme '-)
Avatar billede roenving Novice
18. maj 2004 - 22:08 #14
-- og tak for point ;~}
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