Hej Ett tips till. Var lite snäll mot servern, öppna och stäng inte asp taggarna hela tiden. Testa följande: Jepp, det måste jag annars sccepterar inte javascriptet att jag använder asp koden. Måste som du ser även ha t.ex hela if satsen på samma rad.Kombiner asp och javascript
jag har ett javascipt som skapar en meny och i javascriptet har jag infogat asp kod så att den hämtar poster från databasen och sorterera in allt i en array. Koden följer nedanför. Mitt problem är att efter att den sorterar in posterna i arrayen så skrivs ingen radbrytning vilket medför att alla posterna i arrayen skrivs ut på samma rad i javascriptet. Har testat med document.write("/n") och den skapar en radbrytning men skriver samtidigt ut /n på sidan. fungerar inte heller med response.write("<br>"). Är det ngn som kan komma på en bra lösning? radbrutning måste komma innan den nya rden skrivs ut men helst inte synas i scriptet. dvs en naturlig radbrytning.
Koden:
outline = new makeArray()
<% Set Connect = Server.CreateObject("ADODB.Connection") %>
<% Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databasen.mdb") %>
<% sql="SELECT * from TblTexter order by menyID;" %>
<% set rec11=connect.execute(sql) %>
<% counter1=0 %>
<% while not rec11.eof %>
<% parent = rec11.fields(0)%>
<% umeny = rec11.fields(6)%>
<% a = rec11.fields(11) %>
<% if umeny > 0 then u = 1 else u = 0 end if%>
<% if a = 1 then onc = "onClick=toggle(' + "& parent & " + ');" else onc = "" end if%>
<%if isNull(rec11.fields(10)) then response.write "outline"& "[" & counter1 & "]" & " = new item (false,' "& rec11.fields(1)& "', "&u&")" else response.write "outline" & "[" & counter1 & "]" & " = new item(true,'"& rec11.fields(1)& "', "&u&")" end if %>
<% counter1=counter1+1 %>
<% rec11.movenext %>
document.write ("/n");
<% wend %>
<% set rec11= nothing %>Sv:Kombiner asp och javascript
Kollade visserligen bara lite snabbt men det ser ut som att du öppnar och stänger dem på varje rad, trots att det är asp kod alltihop.
//Anna-KarinSv: Kombiner asp och javascript
outline = new makeArray()
<%
Dim counter1
Dim strSQL
Dim rec11
Dim Connect
strSQL = "SELECT *" & vbCrLf & _
"FROM TblTexter" & vbCrLf & _
"ORDER BY menyID;"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databasen.mdb")
Set rec11 = Connect.Execute(strSQL)
counter1 = 0
Do Until rec11.eof
parent = rec11.fields(0)
umeny = rec11.fields(6)
a = rec11.fields(11)
If umeny > 0 Then
u = 1
Else
u = 0
End if
If a = 1 then
onc = "onClick=toggle(' + "& parent & " + ');"
Else
onc = ""
End if
If isNull(rec11.fields(10)) Then
response.write "outline[" & counter1 & "] = new item(false,' " & rec11.fields(1) & "', " & u & ")"
Else
response.write "outline[" & counter1 & "] = new item(true, '" & rec11.fields(1) & "', " & u & ")"
End if
Response.Write vbCrLf
counter1 = counter1 + 1
rec11.MoveNext
Loop
rec11.Close
Set rec11 = Nothing
%>
En radbrytning brukar vara ANSI tecken 13 (carriage return) och 10 (line feed). Men räcker i vissa fall med 10 (line feed).
Du stängde inte dit recordset. Det bör du göra.
Sv: Kombiner asp och javascript
Löste förövrigt problemet med document.write ("\n");
Det som verkligen strulade till det var att jag behövde ange i arrayen exakt hur många poster den skulle innehålla