Avatar billede karsten_larsen Praktikant
23. januar 2004 - 14:48 Der er 1 kommentar og
1 løsning

Dobbelt sub i menu eller hur?

Jeg ønsker, at kombinere disse to script! Det har bare voldt så mange problemer, så nu er jeg nødtil at spørge.

Fra script 1 skal bruges lukke/åbne (javascritet)
Fra script 2 skal bruges udskrivsfunktionen med parentid bruges

Min problem er, hvordan jeg får skrevet <div display:none> når WriteElements kaldes i sin egen sub! Jeg har prøvet med dobbelt loops, ekstra sub til undermenuer alt uden held.

???:-) karsten_larsen


Script 1
<SCRIPT language=JavaScript>
    function showMnu(id) {
        var styleCheck = document.getElementById("mnu" + id).style.display;
        //alert(styleCheck);
       
        if (styleCheck == "inline") {
            document.getElementById("mnu" + id).style.display = "none";
        }
        if (styleCheck == "none") {
            document.getElementById("mnu" + id).style.display = "inline";
        }
    }
</SCRIPT>

<%
' skrevet af medions http://www.medions.dk/bransholm/
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\menu.mdb"
        SQL = "SELECT * FROM menu"
        Set rs = Conn.Execute(SQL)

    While NOT rs.EOF
        With Response
            .Write("<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 13px;' OnClick='showMnu(" & rs("mnuID") & ");'>" & rs("mnuNavn") & "</div>" & vbCrLf)
            .Write("<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 11px;display:none;' id='mnu" & rs("mnuID") & "'> - undermeu<br> - undermenu</div>" & vbCrLf)
        End With
    rs.MoveNext
    Wend
   
    Set rs = Nothing
    Conn.Close
    Set Conn = Nothing
%>

Script 2
<%
' skrevet af eagleye  www.eksperten.dk
Sub writeElements(pid,level)
  Dim rs, strSql
  strSql = "SELECT * FROM menu WHERE parentid=" & pid
  Set rs = Conn.Execute(strSql)
  If Not rs.Eof Then
    Do While Not rs.Eof
      Response.Write "<div style=""margin-left:" & 15 * level & "px"">"
      Response.Write rs("mnuNavn")
      Response.Write "</div>"
        WriteElements rs("mnuID"), level + 1 'udskriv alle elementer under dette
 
      rs.MoveNext
    Loop
  End If
  rs.Close
  Set rs = Nothing
End Sub %>


<%
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\menu.mdb"
writeElements 0,0
Conn.Close
Set Conn = Nothing
%>


<script language="JavaScript">
    window.open = SymRealWinOpen;
</script>
Avatar billede karsten_larsen Praktikant
23. januar 2004 - 20:01 #1
hmm - er kommet lidt videre, med en if og udvidelse af sub, men det er ikke alle undermenuer som skrives ud

??:-)karsten_larsen

<%
Sub writeElements(pid,level,var2,var3)
  Dim rs, strSql
  strSql = "SELECT * FROM menu WHERE parentid=" & pid
  Set rs = Conn.Execute(strSql)
  If Not rs.Eof Then
    Do While Not rs.Eof
      if var2 = 0 then
      Response.Write("<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 13px;' OnClick='showMnu(" & rs("mnuID") & ");'>" & rs("mnuNavn") & "</div>" & vbCrLf)

      else
      'response.Write("<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 11px;display:none;' id='mnu" & rs("mnuID") & "'> - undermeu<br> - undermenu</div>" & vbCrLf)
      response.Write("<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 11px;display:none;' id='mnu" & var3 & "'>" & rs("mnuNavn") & "</div>" & vbCrLf)
      end if
        WriteElements rs("mnuID"), level + 1, 1, rs("mnuID") 'udskriv alle elementer under dette
 
      rs.MoveNext
    Loop
  End If
  rs.Close
  Set rs = Nothing
End Sub %>
Avatar billede karsten_larsen Praktikant
24. januar 2004 - 11:38 #2
Så lykkedes det!

Der skulle bare laves en if i sub, som tager højde for andet gennemløb.
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