Avatar billede webnoob Nybegynder
10. september 2005 - 21:18 Der er 14 kommentarer og
1 løsning

menu med asp og javascript

Jeg har prøvet at lave en menu i javascript om, så den kan hente data fra min database, men det er ikke rigtig lykkes for mig.

koden:

<!-- #include file="forbindelse.asp" -->
<!-- #include file="forbindelse2.asp" -->

<html>

<head>
<title>menu</title>
<base target="mainFrame">

<style type="text/css">
.menupunkt{font-family:arial;cursor:pointer;color:#FFFFFF;background:#C2DEC7;font-weight:800;font-size:13px;width:250px;font-style:italics;}
.menu{display:none;padding-left:15px;}
.menu a{text-decoration:none;}
.menu a:link{color:white;}
.menu a:visited{color:white;}
.menu a:hover{color:67A877;}
.menu a:active{color:67A877;}
</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 = "billeder/gif/plus.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"billeder/gif/minus.gif":"billeder/gif/plus.gif";
}
</script>

<%
sql = "SELECT * FROM varegrupper WHERE Parent = '0'"
set record=rs.execute(sql)
Do until record.eof
id = record("varegruppeID")

sql2 = "SELECT * FROM varegrupper WHERE Parent = '" & id & "'"
set record2=rs.execute(sql2)
do until record2.eof
%>

</head>

<body bgcolor="#C2DEC7">
<div id="omenu1" class="menupunkt" onMouseover="showMenu(this);">
<img id="omenu1pic" src="billeder/gif/plus.gif" height="10" width="10">
<%
'Kalder overmenupunkt
response.write record("varegruppenavn")&" "
record.MoveNext
%>
    <div id="menu1" class="menu" onMouseover="event.cancelBubble=true">
    <%
    'Kalder undermenupunkt
    response.write record2("varegruppenavn")&" "
    record2.MoveNext
    %>
    </div>
</div>
</body>

</html>

<%
Loop

Loop
%>

<!-- #include file="forbindelseluk.asp" -->

Hvis du vil se hvordan koden virker uden asp, så klik ind på www.millet-design.dk
Avatar billede nielle Nybegynder
10. september 2005 - 22:28 #1
Du kan starte med at bringe dine to løkker i orden. Deres overordnede struktur skal se sådan her ud:

<%
sql = "SELECT * FROM varegrupper WHERE Parent = '0'"
set record = rs.execute(sql)

' Den ydre loop
Do Until record.EOF
    id = record("varegruppeID")

    Response.Write record("varegruppenavn") & "<br>"

    sql2 = "SELECT * FROM varegrupper WHERE Parent = '" & id & "'"
    set record2 = rs.execute(sql2)

    ' Den indre loop
    Do Until record2.EOF
        Response.Write record2("varegruppenavn") & "<br>"

        record2.MoveNext
    Loop

    record.MoveNext
Loop
%>

Dernæst skal du passe på med ikke at få anbragt dine <head> og <body> tagse inden for i løkkerne - for så bliver der bare udskrevet flere af dem end hvad godt er.
Avatar billede webnoob Nybegynder
10. september 2005 - 22:32 #2
yes ok, men jeg kan stadig ikke få menuen til at virker
Avatar billede webnoob Nybegynder
10. september 2005 - 22:47 #3
nu kan jeg få én overmenu frem og flytter jeg musen over den kommer alle dens undermenuer, meeen der kommer også et overmenupunkt ind.........

det er sgu svært at få flettet javascript og asp sammen. :D
Avatar billede nielle Nybegynder
10. september 2005 - 22:55 #4
Yep, det gælder om at holde tungen lige i munden. :^)
Avatar billede webnoob Nybegynder
10. september 2005 - 22:59 #5
det er nu lykkes mig at få alle overmenupunkterne frem, men nu kan jeg så kun få en undermenu frem, og det er under det første overmenupunkt.

<body bgcolor="#C2DEC7">
<br>
<a href="main.html" class="menupunkt"><b><font size="3" face="Arial">Forside</font></b></a>
<%
sql = "SELECT * FROM varegrupper WHERE Parent = '0'"
set record = rs.execute(sql)

' Den ydre loop
Do Until record.EOF
    id = record("varegruppeID")
%>
<div id="omenu1" class="menupunkt" onMouseover="showMenu(this);">
<img id="omenu1pic" src="billeder/gif/plus.gif" height="10" width="10">
<%
Response.Write record("varegruppenavn") & "<br>"
sql2 = "SELECT * FROM varegrupper WHERE Parent = '" & id & "'"
    set record2 = rs.execute(sql2)
    ' Den indre loop
  Do Until record2.EOF
%>
    <div id="menu1" class="menu" onMouseover="event.cancelBubble=true">
    <%
    Response.Write record2("varegruppenavn") & "<br>"
    %>
    </div>
</div>
<%
        record2.MoveNext
    Loop

    record.MoveNext
Loop
%>

</body>


har du en ide til hvad jeg skal gøre?
Avatar billede nielle Nybegynder
10. september 2005 - 23:12 #6
Prøv med denne version af koden hvor at der er noget DEBUG-udskrift med:

<body bgcolor="#C2DEC7">
<br>
<a href="main.html" class="menupunkt"><b><font size="3" face="Arial">Forside</font></b></a>
<%
sql1 = "SELECT * FROM varegrupper WHERE Parent = '0'"
Response.Write "DEBUG #1 " & sql1 & "<br>"
set record = rs.execute(sql1)

' Den ydre loop
Do Until record.EOF
    id = record("varegruppeID")
%>
    <div id="omenu1" class="menupunkt" onMouseover="showMenu(this);">
    <img id="omenu1pic" src="billeder/gif/plus.gif" height="10" width="10">
<%
    Response.Write record("varegruppenavn") & "<br>"
    sql2 = "SELECT * FROM varegrupper WHERE Parent = '" & id & "'"
    Response.Write "DEBUG #2 " & sql2 & "<br>"
    set record2 = rs.execute(sql2)

    ' Den indre loop
    Do Until record2.EOF
%>
        <div id="menu1" class="menu" onMouseover="event.cancelBubble=true">
<%
        Response.Write record2("varegruppenavn") & "<br>"
%>
        </div>
<%
        record2.MoveNext
    Loop
%>
    </div>
<%
    record.MoveNext
Loop
%>

</body>
Avatar billede webnoob Nybegynder
10. september 2005 - 23:20 #7
nix det funger ikke, hvis du vil give det et par forsøg mere så kan jeg give dig en ftp-adgang og linket.
Avatar billede nielle Nybegynder
10. september 2005 - 23:39 #8
Selvfølgelig funker det ikke - der er ikke lavet noget om i funktionaliteten; Der er kun kommet et par DEBUG-udskrifter med sådan at vi kan se hvad det er der sker. Du må meget gerne poste dem her sådan at jeg kan se dem.
Avatar billede webnoob Nybegynder
10. september 2005 - 23:56 #9
jamen det kommer så her:


Forside DEBUG #1 SELECT * FROM varegrupper WHERE Parent = '0'
Piger
DEBUG #2 SELECT * FROM varegrupper WHERE Parent = '1'

Bukser

Bluser

Bodyer

Kjoler

Jakker

Køreposer
Drenge
DEBUG #2 SELECT * FROM varegrupper WHERE Parent = '2'

Bukser

Bluser

Bodyer

Jakker

Køreposer
Kvinder
DEBUG #2 SELECT * FROM varegrupper WHERE Parent = '3'

Bukser

Bluser

Kjoler

Jakker
Diverse
DEBUG #2 SELECT * FROM varegrupper WHERE Parent = '4'

Smykker

Tasker/Punge

Sokker
Avatar billede webnoob Nybegynder
11. september 2005 - 00:05 #10
det er ikke helt det jeg ser på selve siden, prøv og gå ind på http://milletest.millet-design.dk
Avatar billede webnoob Nybegynder
11. september 2005 - 00:06 #11
Avatar billede nielle Nybegynder
11. september 2005 - 07:16 #12
Hvis du laver en Vis Kilde på din eksempel-side, så kan du se at under-menupunkterne rent faktisk er der.

Af en eller anden grund er de bare ikke alle sammen synlige på siden, men det må have noget at gøre med dine <div>-tags og dit CSS.
Avatar billede webnoob Nybegynder
11. september 2005 - 10:33 #13
ja det sad og godt også og undrede mig over i går, er det muligt du kan løse det for mig?
Avatar billede nielle Nybegynder
12. september 2005 - 20:10 #14
Hej, jeg kan se at du har fået det til at virke nu.

Var det ikke primært et spørgsmål om at få sat forskellige numre på dine id'er?
Avatar billede webnoob Nybegynder
12. september 2005 - 21:32 #15
hehe, jo jeg har fået det løst. Jeg måtte have lidt hjælp af en web-udvikler, men som du sige det lykkedes.

den redigeret kode:

<%
sql1 = "SELECT * FROM varegrupper WHERE Parent = '0'"
set record = rs.execute(sql1)

' Den ydre loop
x=0
y=0
Do Until record.EOF
    id = record("varegruppeID")
x=x+1

%>
    <div id="omenu<%=x%>" class="menupunkt" onMouseover="showMenu(this);">
    <img id="omenu<%=x%>pic" src="billeder/gif/plus.gif" height="10" width="10">
<%
    Response.Write record("varegruppenavn") & "<br>"%>
<div id="menu<%=x%>" class="menu" onMouseover="event.cancelBubble=true">
<%
    sql2 = "SELECT * FROM varegrupper WHERE Parent = '" & id & "'"
    set record2 = rs.execute(sql2)

    ' Den indre loop
    Do Until record2.EOF

%>
       
<%
        Response.Write "<a href=""varer.asp?id="&record2("varegruppeid")&""" target=""mainFrame"""">"&record2("varegruppenavn") & "</a><br>"
%>
     
<%
        record2.MoveNext
    Loop
%>  </div>
    </div>
<%
    record.MoveNext
Loop
%>
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
Kurser inden for grundlæggende programmering

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