Avatar billede melted Nybegynder
22. marts 2005 - 10:29 Der er 18 kommentarer og
3 løsninger

HTML-kode i variabel giver fejl?

Jeg har et script hvor jeg sender noget html-kode der bliver genereret af noget ASP-kode, videre i en javascript variabel. Der er bare noget der går galt, så scriptet ikke forstår variablen der hedder HTMLcode. Kan forestille mig det måske er noget med "-tegnene eller '-tegnene, men hvordan kommer jeg udenom dette problem?

        HTMLcode = HTMLcode & "<table width=""100%""  border=""0"" cellpadding=""4"" cellspacing=""0"" bgcolor=""#657786"">"
        HTMLcode = HTMLcode & "  <tr>"
        HTMLcode = HTMLcode & "    <td><img src=""images/logo.gif"" height=""16""></td>"
        HTMLcode = HTMLcode & "  </tr>"
        HTMLcode = HTMLcode & "</table>"

        response.Write("<script type=""text/javascript"">")
        response.Write("var url = '';")
        response.Write("var html = ' & HTMLcode & ';")
        response.Write("doSomething(url, html);")
        response.Write("</script>")
Avatar billede melted Nybegynder
22. marts 2005 - 10:31 #1
Der er forresten også nogle steder i HTMLcode hvor der kommer nogle '-tegn...
F.eks.: onClick=""top.location.href='test.asp'""
Avatar billede moejensen Nybegynder
22. marts 2005 - 10:32 #2
hvilken linie får du fejl i?
Avatar billede melted Nybegynder
22. marts 2005 - 10:38 #3
Det kan jeg ikke rigtig se, men umiddelbart er det i den linje hvor der står response.Write("var html = ' & HTMLcode & ';"), for hvis jeg bare sætter noget almindelig tekst ind istedet for " & HTMLcode & ", så virker det fint nok.
Avatar billede moejensen Nybegynder
22. marts 2005 - 10:41 #4
den skal også rettes til:

response.Write("var html = '" & HTMLcode & "';")
Avatar billede melted Nybegynder
22. marts 2005 - 10:44 #5
Nå ja, sådan havde jeg også først gjort det, men det virker stadig ikke... :(
Avatar billede fennec Nybegynder
22. marts 2005 - 10:48 #6
Jeg vil tro at du bare skal escape ' tegne i HTMLcode:

response.Write("var html = ' & replace(HTMLcode,"'","/'") & "';")
Avatar billede moejensen Nybegynder
22. marts 2005 - 10:56 #7
jeg får ingen fejl på min maskine, og HTMLcode variablem kommer fint ind i Javascriptet.
Avatar billede moejensen Nybegynder
22. marts 2005 - 10:58 #8
HTMLcode = HTMLcode & "<table width=""100%""  border=""0"" cellpadding=""4"" cellspacing=""0"" bgcolor=""#657786"">" &vbCtrl
HTMLcode = HTMLcode & "  <tr>"&vbCtrl
HTMLcode = HTMLcode & "    <td><img src=""images/logo.gif"" height=""16""></td>"&vbCtrl
HTMLcode = HTMLcode & "  </tr>"&vbCtrl
HTMLcode = HTMLcode & "</table>"&vbCtrl

response.Write("<script type=""text/javascript"">" &vbCrlf)
response.Write("var url = '';" &vbCrlf)
response.Write("var html = '" & HTMLcode & "';" &vbCrlf)
response.Write("doSomething(url, html);" &vbCrlf)
response.Write("</script>" & vbCrlf)
Avatar billede melted Nybegynder
22. marts 2005 - 10:58 #9
Vil /-tegnet ikke "ødelægge" koden?
Avatar billede fennec Nybegynder
22. marts 2005 - 11:06 #10
Det burde den ikke. Problemet er jo at du har ' tegnet i HTMLcode, og resultatet derfor bliver noget ala:
var html = '... <input type="button" onClick="'test.asp'">...';

Det kan JavaScript naturlig ikke forstå, da der er ' tegn i, derfor escaper du ' tegnene med /' lige som du bruger "" til at escape " tegnet i ASP.
Avatar billede moejensen Nybegynder
22. marts 2005 - 11:12 #11
der er da ikke '-tegn i html koden så vidt jeg kan se.
Avatar billede melted Nybegynder
22. marts 2005 - 11:13 #12
Okay... et eller andet skete der ihvertfald, men hvad gør så det der vbCtrl?
Avatar billede fennec Nybegynder
22. marts 2005 - 11:23 #13
Det er ASP kode for linjeskift. Hvis du ikke har den ser koden sådan ud i browseren (kildekode):

<script type="text/javascript">var url = ''; var html = '.....';doSomething(url, html);</script>

istedet for:
<script type="text/javascript">
var url = '';
var html = '.....';
doSomething(url, html);
</script>

Som er meget mere læse/brugervenligt, når man skal finde fejl. Du kan jo prøve at fjerne dem og tjekke kildekoden i browseren, også se hvordan det ser ud. Det burde stadig virke uden vbCtrl...
Avatar billede fennec Nybegynder
22. marts 2005 - 11:27 #14
moejensen >>
Der er heller ikke ' i det udsnit af koden melted har vist, men det står som en bemærkning i hans post 10:31:26. Jeg så det heller ikke først :o)
Avatar billede moejensen Nybegynder
22. marts 2005 - 11:29 #15
jeg har stadig ikke helt fundet ud ag hvorfor du vil lave en replace på ', når den ikke brlive rbrugt nogen steder i html koden?
Avatar billede moejensen Nybegynder
22. marts 2005 - 11:30 #16
okay, den havde jeg heller ikke lige fanget ;-)
Avatar billede melted Nybegynder
22. marts 2005 - 11:33 #17
Nå, men det ser ud til det virker nogenlunde... finder selv ud af resten :) Tak skal I have!
Kan man dele pointene ud i 2, så I begge kan få point?
Avatar billede fennec Nybegynder
22. marts 2005 - 11:36 #18
Det kan man sagtens, vi skal bare lave et svar begge to :o)
Avatar billede moejensen Nybegynder
22. marts 2005 - 11:42 #19
takker for point :-)
Avatar billede melted Nybegynder
22. marts 2005 - 12:42 #20
Hmm... hvad gør jeg så hvis jeg har et link til en website hvor der er /-tegn i URL'en? Så escaper den der hvor /tegnet er... hvordan kommer man så udenom det?
Avatar billede fennec Nybegynder
22. marts 2005 - 12:59 #21
Mener det er dobbelt /. Og den replace skal selvfølgelig laves inden ' bliver udskiftet med /', så de ikke bliver ændret:

replace(replace(HTMLcode,"/","//"),"'","/'")
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