Avatar billede zantiago Nybegynder
19. marts 2005 - 18:51 Der er 30 kommentarer og
1 løsning

Ændre CSS i JavaScript ud fra ASP-Variabel

Hej Eksperter

Ja lidt et spørgsmål som kunne have været placeret mange steder :o)

Jeg har en dynamisk menu i javascript, som bliver bestemt af et asp-script. Se nedenstående:

------------------------------------------------------------------------------------------
<div class="style3" style="padding-top:10px">
<%
'Henter menustruktur fra database
Set rs_menu = Server.CreateObject("ADODB.RecordSet")
rs_menu.open "Select * From [Pages] where Site_Id = " & Site_Id & "" , Conn
%>
<script type="text/javascript">
<!--
d = new dTree('d');

d.add(0,-1,'Website');
<%
do while not rs_menu.EOF
'Udskriver menu
Id            = rs_menu("Id")
Page_Name         = rs_menu("Page_Name")
relation        = rs_menu("page_relation")
Page_Level        = (Cint(rs_menu("Page_Level")) + 1)
'Udskriver værdien af menu, enten true, eller false
Menu            = rs_menu("Menu")
%>
d.add(<%=id%>,<%=relation%>,'<%=Page_Name%>','page.asp?page_id=<%=id%>&Page_Level=<%=Page_Level%>&Page_Relation=<%=id%>');
<%
'Looper felterne
rs_menu.MoveNext
Loop
'recordset lukkes
rs_menu.close
%>       
document.write(d);
//-->
</script>
</div>
------------------------------------------------------------------------------------------

Hvis værdien af "menu" er false skal linjen skrives med rød skrift, altså CSS filen skal i stedet for at hente Style3 hente Style4.

Men alle mine forsøg er mislykkedes, så jeg håber der er en der kan overskue det :o)

På forhånd tak!!!

// Morten
Avatar billede moejensen Nybegynder
20. marts 2005 - 14:57 #1
hvad får du af fejl?
Avatar billede zantiago Nybegynder
20. marts 2005 - 16:56 #2
Jeg får ikke så meget fejl - for jeg ved ikke hvor jeg skal indsætte det.. Men det jeg har prøvet indtil videre har resulteret i at menuen bare ikke vises.
Avatar billede moejensen Nybegynder
20. marts 2005 - 17:04 #3
hvis jeg forstår dig ret, så skal du vel bare gøre som følger:

If menu = false then
  Response.write("<div class=""style4"" style=""padding-top:10px"">")
Else
  Response.write("<div class=""style3"" style=""padding-top:10px"">")
End If
Avatar billede moejensen Nybegynder
20. marts 2005 - 17:05 #4
det var et svar
Avatar billede zantiago Nybegynder
20. marts 2005 - 17:14 #5
Ja det er jeg klar over - men problemet er vel at loopet først kommer inde i javascriptet - jeg har lige testet det der, og det virker ikke :o(

Hvis man kigger på kildekoden kommer der til at stå:

<script type="text/javascript">
        <!--
        d = new dTree('d');
       
        d.add(0,-1,'Website');

<div class="style3">
        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');
</div>

<div class="style3">
        d.add(2,0,'Zantiago CMS','page.asp?page_id=2&Page_Level=2&Page_Relation=2');
</div>

<div class="style3">
        d.add(3,2,'Priser','page.asp?page_id=3&Page_Level=3&Page_Relation=3');
</div>

<div class="style3">
        d.add(4,2,'Moduler','page.asp?page_id=4&Page_Level=3&Page_Relation=4');
</div>

<div class="style3">
        d.add(5,0,'Hvem er vi?','page.asp?page_id=5&Page_Level=2&Page_Relation=5');
</div>

<div class="style3">
        d.add(6,0,'Kontakt','page.asp?page_id=6&Page_Level=2&Page_Relation=6');
</div>

<div class="style3">
        d.add(7,3,'Test på priser','page.asp?page_id=7&Page_Level=4&Page_Relation=7');
</div>

<div class="style3">
        d.add(8,3,'Test på priser 2','page.asp?page_id=8&Page_Level=4&Page_Relation=8');
</div>

<div class="style3">
        d.add(10,0,'Testside1','page.asp?page_id=10&Page_Level=2&Page_Relation=10');
</div>

<div class="style3">
        d.add(11,0,'Testside 2','page.asp?page_id=11&Page_Level=2&Page_Relation=11');
</div>

   
        document.write(d);
        //-->
        </script>
Avatar billede zantiago Nybegynder
20. marts 2005 - 17:17 #6
Menuen kommer simpelthen ikke frem...
Avatar billede moejensen Nybegynder
20. marts 2005 - 17:19 #7
den kode du har vist i toppe, kan ikke give det du skriver for div'en er uden for loopet
Avatar billede moejensen Nybegynder
20. marts 2005 - 17:21 #8
men du kan bare flytte lidt rundt på koden, så du flytter stedet hvor du erklære variablerne:


<%
'Henter menustruktur fra database
Set rs_menu = Server.CreateObject("ADODB.RecordSet")
rs_menu.open "Select * From [Pages] where Site_Id = " & Site_Id & "" , Conn

'Udskriver menu
Id            = rs_menu("Id")
Page_Name        = rs_menu("Page_Name")
relation        = rs_menu("page_relation")
Page_Level        = (Cint(rs_menu("Page_Level")) + 1)
'Udskriver værdien af menu, enten true, eller false
Menu            = rs_menu("Menu")

If menu = false then
  Response.write("<div class=""style4"" style=""padding-top:10px"">")
Else
  Response.write("<div class=""style3"" style=""padding-top:10px"">")
End If
%>
<script type="text/javascript">
<!--
d = new dTree('d');

d.add(0,-1,'Website');
<%
do while not rs_menu.EOF
%>
d.add(<%=id%>,<%=relation%>,'<%=Page_Name%>','page.asp?page_id=<%=id%>&Page_Level=<%=Page_Level%>&Page_Relation=<%=id%>');
<%
'Looper felterne
rs_menu.MoveNext
Loop
'recordset lukkes
rs_menu.close
%>       
document.write(d);
//-->
</script>
</div>
Avatar billede zantiago Nybegynder
20. marts 2005 - 17:38 #9
Hvis jeg gør det på ovenstående metode vil alle Id, relation, Page_Name osv. jo være ens! Da de ikke indgår i loopet!!!
Avatar billede steen_hansen Forsker
20. marts 2005 - 17:41 #10
Kigger med, lidt spændende :)
Avatar billede moejensen Nybegynder
20. marts 2005 - 17:42 #11
okay, så det er ikke alt koden du har posted?
Avatar billede zantiago Nybegynder
20. marts 2005 - 17:47 #12
Det forstår jeg ikke! Posted?

ASP-Kode:
---------------------------------------------------------------------------------------
<%
'Henter menustruktur fra database
Set rs_menu = Server.CreateObject("ADODB.RecordSet")
rs_menu.open "Select * From [Pages] where Site_Id = " & Site_Id & "" , Conn

'Udskriver menu
Id                = rs_menu("Id")
Page_Name         = rs_menu("Page_Name")
relation        = rs_menu("page_relation")
Page_Level        = (Cint(rs_menu("Page_Level")) + 1)

If menu = false then
  Response.write("<div class=""style4"" style=""padding-top:10px"">")
Else
  Response.write("<div class=""style3"" style=""padding-top:10px"">")
End If
%>
    <p><a href="java script: d.openAll();">Åben alle</a> | <a href="java script: d.closeAll();">Luk alle</a></p>

    <script type="text/javascript">
        <!--
        d = new dTree('d');
       
        d.add(0,-1,'Website');
<%
do while not rs_menu.EOF
%>
        d.add(<%=id%>,<%=relation%>,'<%=Page_Name%>','page.asp?page_id=<%=id%>&Page_Level=<%=Page_Level%>&Page_Relation=<%=id%>');
<%
'Looper felterne
rs_menu.MoveNext
Loop
'recordset lukkes
rs_menu.close
%>
</div>       
        document.write(d);
        //-->
        </script>
---------------------------------------------------------------------------------------

Output:
---------------------------------------------------------------------------------------
<div class="style4" style="padding-top:10px">
    <p><a href="java script: d.openAll();">Åben alle</a> | <a href="java script: d.closeAll();">Luk alle</a></p>

    <script type="text/javascript">
        <!--
        d = new dTree('d');
       
        d.add(0,-1,'Website');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

</div>       
        document.write(d);
        //-->
        </script>
---------------------------------------------------------------------------------------
Avatar billede moejensen Nybegynder
20. marts 2005 - 17:54 #13
posted mener jeg skrevet her.

Den kode du lige har sat ind, er det hele koden for den side du har problemer med=?
Avatar billede zantiago Nybegynder
20. marts 2005 - 17:56 #14
Der er ingen grund til at poste:
<html>
<head>
osv...

Det er ATL det relevante :o)
Avatar billede moejensen Nybegynder
20. marts 2005 - 17:59 #15
og hvordan er det meningen det skal se ud?
Avatar billede zantiago Nybegynder
20. marts 2005 - 18:04 #16
Her skrevet uden CSS:

<script type="text/javascript">
        <!--
        d = new dTree('d');
       
        d.add(0,-1,'Website');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(2,0,'Zantiago CMS','page.asp?page_id=2&Page_Level=2&Page_Relation=2');

        d.add(3,2,'Priser','page.asp?page_id=3&Page_Level=3&Page_Relation=3');

        d.add(4,2,'Moduler','page.asp?page_id=4&Page_Level=3&Page_Relation=4');

        d.add(5,0,'Hvem er vi?','page.asp?page_id=5&Page_Level=2&Page_Relation=5');

        d.add(6,0,'Kontakt','page.asp?page_id=6&Page_Level=2&Page_Relation=6');

        d.add(7,3,'Test på priser','page.asp?page_id=7&Page_Level=4&Page_Relation=7');

        d.add(8,3,'Test på priser 2','page.asp?page_id=8&Page_Level=4&Page_Relation=8');

        d.add(10,0,'Testside1','page.asp?page_id=10&Page_Level=2&Page_Relation=10');

        d.add(11,0,'Testside 2','page.asp?page_id=11&Page_Level=2&Page_Relation=11');

        d.add(12,0,'Mortens Ego Side','page.asp?page_id=12&Page_Level=2&Page_Relation=12');

        d.add(13,1,'Forside Underside','page.asp?page_id=13&Page_Level=3&Page_Relation=13');

        d.add(14,13,'set','page.asp?page_id=14&Page_Level=4&Page_Relation=14');

        d.add(15,4,'Sitemap','page.asp?page_id=15&Page_Level=4&Page_Relation=15');

        d.add(20,0,'Super testside','page.asp?page_id=20&Page_Level=2&Page_Relation=20');


        document.write(d);
        //-->
        </script>
Avatar billede moejensen Nybegynder
20. marts 2005 - 18:35 #17
er det meningen at der kun skal være en div uden om hele rækken?
Avatar billede zantiago Nybegynder
20. marts 2005 - 18:38 #18
Altså hver række skal undersøges om den er true eller false - Derefter skal der bestemmes hvilken div class der skal bruges.. Lige nu er der bare en uden om det hele.
Avatar billede moejensen Nybegynder
20. marts 2005 - 18:43 #19
okay, så det du fik 20/03-2005 17:14:54 var rigtig nok, der var bare style 3 hele vejen ned?
Avatar billede zantiago Nybegynder
20. marts 2005 - 18:45 #20
ja men det virker ikke når man skriver en div inden i javascriptet - det er det som er mit problem :o)
Avatar billede moejensen Nybegynder
20. marts 2005 - 18:48 #21
her er en løsning, hvor der kommer en div med for hver loop, og som tjekker i hvert loop efter true/false:

<%
'Henter menustruktur fra database
Set rs_menu = Server.CreateObject("ADODB.RecordSet")
rs_menu.open "Select * From [Pages] where Site_Id = " & Site_Id & "" , Conn
%>
<script type="text/javascript">
<!--
d = new dTree('d');

d.add(0,-1,'Website');
<%
do while not rs_menu.EOF

If rs_menu("Menu") = false then
  Response.write("<div class=""style4"" style=""padding-top:10px"">")
Else
  Response.write("<div class=""style3"" style=""padding-top:10px"">")
End If
'Udskriver menu
Id            = rs_menu("Id")
Page_Name        = rs_menu("Page_Name")
relation        = rs_menu("page_relation")
Page_Level        = (Cint(rs_menu("Page_Level")) + 1)
'Udskriver værdien af menu, enten true, eller false
Menu            = rs_menu("Menu")
%>
d.add(<%=id%>,<%=relation%>,'<%=Page_Name%>','page.asp?page_id=<%=id%>&Page_Level=<%=Page_Level%>&Page_Relation=<%=id%>');
<%
Response.write("</div>")
'Looper felterne
rs_menu.MoveNext
Loop
'recordset lukkes
rs_menu.close
%>       
document.write(d);
//-->
</script>
Avatar billede zantiago Nybegynder
20. marts 2005 - 19:06 #22
Ja - Det har jeg prøvet - så forsvinder menuen :o(
Avatar billede moejensen Nybegynder
20. marts 2005 - 19:20 #23
prøv lige at skriv et eksempel hvor menuen virker, så jeg ved hvordan strukturen skal være.
Avatar billede zantiago Nybegynder
20. marts 2005 - 19:25 #24
Menuen som den er nu - med en tekstfarve
--------------------------------------------------------------------------------------
<div class="style3">
<%
'Henter menustruktur fra database
Set rs_menu = Server.CreateObject("ADODB.RecordSet")
rs_menu.open "Select * From [Pages] where Site_Id = " & Site_Id & "" , Conn
%>
    <p><a href="java script: d.openAll();">Åben alle</a> | <a href="java script: d.closeAll();">Luk alle</a></p>

    <script type="text/javascript">
        <!--
        d = new dTree('d');
       
        d.add(0,-1,'Website');
<%
do while not rs_menu.EOF
'Udskriver menu
Id                = rs_menu("Id")
Page_Name         = rs_menu("Page_Name")
relation        = rs_menu("page_relation")
Page_Level        = (Cint(rs_menu("Page_Level")) + 1)
%>
        d.add(<%=id%>,<%=relation%>,'<%=Page_Name%>','page.asp?page_id=<%=id%>&Page_Level=<%=Page_Level%>&Page_Relation=<%=id%>');
<%
'Looper felterne
rs_menu.MoveNext
Loop
'recordset lukkes
rs_menu.close
%>
   
        document.write(d);
        //-->
        </script>
</div>
--------------------------------------------------------------------------------------
Avatar billede zantiago Nybegynder
20. marts 2005 - 19:26 #25
Output bliver så:

--------------------------------------------------------------------------------------
<div class="style3">
<p><a href="java script: d.openAll();">Åben alle</a> | <a href="java script: d.closeAll();">Luk alle</a></p>

    <script type="text/javascript">
        <!--
        d = new dTree('d');
       
        d.add(0,-1,'Website');

        d.add(1,0,'Forside','page.asp?page_id=1&Page_Level=2&Page_Relation=1');

        d.add(2,0,'Zantiago CMS','page.asp?page_id=2&Page_Level=2&Page_Relation=2');

        d.add(3,2,'Priser','page.asp?page_id=3&Page_Level=3&Page_Relation=3');

        d.add(4,2,'Moduler','page.asp?page_id=4&Page_Level=3&Page_Relation=4');

        d.add(5,0,'Hvem er vi?','page.asp?page_id=5&Page_Level=2&Page_Relation=5');

        d.add(6,0,'Kontakt','page.asp?page_id=6&Page_Level=2&Page_Relation=6');

        d.add(7,3,'Test på priser','page.asp?page_id=7&Page_Level=4&Page_Relation=7');

        d.add(8,3,'Test på priser 2','page.asp?page_id=8&Page_Level=4&Page_Relation=8');

        d.add(10,0,'Testside1','page.asp?page_id=10&Page_Level=2&Page_Relation=10');

        d.add(11,0,'Testside 2','page.asp?page_id=11&Page_Level=2&Page_Relation=11');

        d.add(12,0,'Mortens Ego Side','page.asp?page_id=12&Page_Level=2&Page_Relation=12');

        d.add(13,1,'Forside Underside','page.asp?page_id=13&Page_Level=3&Page_Relation=13');

        d.add(14,13,'set','page.asp?page_id=14&Page_Level=4&Page_Relation=14');

        d.add(15,4,'Sitemap','page.asp?page_id=15&Page_Level=4&Page_Relation=15');

        d.add(20,0,'Super testside','page.asp?page_id=20&Page_Level=2&Page_Relation=20');

   
        document.write(d);
        //-->
        </script>
</div>
--------------------------------------------------------------------------------------
Avatar billede zantiago Nybegynder
20. marts 2005 - 19:28 #26
Det er denne her der er brugt:
http://www.destroydrop.com/javascripts/tree/
Avatar billede moejensen Nybegynder
20. marts 2005 - 19:36 #27
det er jo slet ikke muligt i den menu at style de enkelte punkter.
Avatar billede zantiago Nybegynder
20. marts 2005 - 19:39 #28
Det skal det være... Jeg har set det blive gjort i andre javascript menuer, så det må kunne lade sig gøre :o)
Avatar billede moejensen Nybegynder
20. marts 2005 - 19:43 #29
du kan helt sikkert i andre menuer, hvor der er lavet en option ti ldet, men det er der ikke så vidt jeg kan se i den menu du bruger her.
Avatar billede zantiago Nybegynder
21. marts 2005 - 00:18 #30
Har fundet en løsning :o)
--------------------------------------------------------------------------------------
If rs_menu("Menu") = "True" then
Color = "#000000"
Else
Color = "#BB7F7F"
End If

Page_Name = "<font color=" & color & ">" & rs_menu("Page_Name") & "</font>"
--------------------------------------------------------------------------------------

Jeg synes dog at du har fortjent pointsene, eftersom du har brugt hele din søndag på det :o) Smid et svar :o)
Avatar billede moejensen Nybegynder
21. marts 2005 - 07:40 #31
det var godt du fandt en løsning. Jeg takker.
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