/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Valideringsproblem med </span> i document.~
Fra : Kim Ludvigsen


Dato : 27-11-03 13:22

Jeg er ikke skrap til Javascript, så bær over med mig, hvis der er en
indlysende forklaring.

Jeg har en datofunktion i headeren, der finder frem til dags dato.

På det rette sted på siden har jeg så indsat følgende i en div:

<script type="text/javascript">
<!--
document.write("<span class='datotekst'>" + dato + ". " + maaned + " " +
aar + "</span>");
-->
</script>

Når jeg validerer siden, får jeg at vide, at jeg lukker en span, der
ikke er åben. Valideringen ser åbenbart kun </span> og ikke <span
class='dato'>. Hvorfor? Og ikke mindst, hvordan retter jeg op på fejlen?

--
Mvh. Kim Ludvigsen

 
 
Jens Gyldenkærne Cla~ (27-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-11-03 13:35

Kim Ludvigsen skrev:

> Når jeg validerer siden, får jeg at vide, at jeg lukker en
> span, der ikke er åben. Valideringen ser åbenbart kun </span>
> og ikke <span class='dato'>. Hvorfor? Og ikke mindst, hvordan
> retter jeg op på fejlen?

Jeg kan ikke svare på hvorfor - men du kan løse problemet ved at
pakke scriptet ind i en CDATA-sektion:

<script type="text/javascript"><![CDATA[
document.write("<span class='datotekst'>" + dato + ". " + maaned +
" " +
aar + "</span>");
   ]]>
</script>

HTML-kommentarerne er i øvrigt (så vidt jeg da ved) overflødige.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kim Ludvigsen (27-11-2003)
Kommentar
Fra : Kim Ludvigsen


Dato : 27-11-03 13:55

Jens Gyldenkærne Clausen wrote:
>
> Kim Ludvigsen skrev:
>
> > Når jeg validerer siden, får jeg at vide, at jeg lukker en
> > span, der ikke er åben. Valideringen ser åbenbart kun </span>
> > og ikke <span class='dato'>. Hvorfor? Og ikke mindst, hvordan
> > retter jeg op på fejlen?
>
> Jeg kan ikke svare på hvorfor - men du kan løse problemet ved at
> pakke scriptet ind i en CDATA-sektion:

Det gør desværre ingen forskel. Jeg skal måske lige nævne, at jeg
benytter følgende doctype:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
hvis det kan gøre en forskel.

--
Mvh. Kim Ludvigsen

Kim Ludvigsen (27-11-2003)
Kommentar
Fra : Kim Ludvigsen


Dato : 27-11-03 14:06

Kim Ludvigsen wrote:
>
> Jens Gyldenkærne Clausen wrote:
> >
> > Kim Ludvigsen skrev:
> >
> > > Når jeg validerer siden, får jeg at vide, at jeg lukker en
> > > span, der ikke er åben. Valideringen ser åbenbart kun </span>
> > > og ikke <span class='dato'>. Hvorfor? Og ikke mindst, hvordan
> > > retter jeg op på fejlen?

Hmm, jeg fandt lige en løsning, men hvis andre har et bedre forslag
eller en ide om, hvad der går galt, hører jeg gerne.

Oprindelig linje, der ikke vil validere:
document.write("<span class='datotekst'>" + dato + ". " + maaned + " " +
aar + "</span>");

Ny linje, der validerer (adskillelse af </span>):
document.write("<span class='datotekst'>" + dato + ". " + maaned + " " +
aar + "<" + "/span" + ">");

--
Mvh. Kim Ludvigsen

Jens Gyldenkærne Cla~ (27-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-11-03 14:50

Kim Ludvigsen skrev:

> Det gør desværre ingen forskel. Jeg skal måske lige nævne, at jeg
> benytter følgende doctype:
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> hvis det kan gøre en forskel.

Det gør det (hvad jeg ikke var opmærksom på før). CDATA-tricket
virker kun i XHTML. Jeg var i øvrigt nødt til at tilføje html- og
javascriptkommentarer for at få det til at virke korrekt (selv om
det validere fint uden). Et XHTML-eksempel kan ses her:
<http://gyros.dk/usenet/html/scriptvalidering.shtml>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Lasse Reichstein Nie~ (27-11-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 27-11-03 15:02

Kim Ludvigsen <usenet@kimludvigsen.dk> writes:

> Jeg er ikke skrap til Javascript, så bær over med mig, hvis der er en
> indlysende forklaring.

Indlysende, nej. Forklaring, ja :)

> <script type="text/javascript">
> <!--

HTML-kommentarer er ikke nødvendige i Javascript.

> document.write("<span class='datotekst'>" + dato + ". " + maaned + " " +
> aar + "</span>");

Her er problemet.
Ifølge HTML-specifikationen slutter et script-element ved den *første*
"</" der følger efter. I dit tilfælde er det den i </span>.
Browsere er lidt mere overbærende, og slutter første ved "</script>",
men det er egentlig en fejl. Validatoren følger specifikationen
strengt.

Det er ligegyldigt hvad der står i mellem "<script...>" og "</", det
bliver først kigget på som Javascript når slutningen er fundet. Det
hjælper altså ikke at "</" står inde i en streng, fordi på det tidspunkt
hvor script-elementets slutpunkt bliver fundet er der slet ikke kigget
på indholdet.

De (dem der skrev HTML-specifikationen) anbefaler at man skriver "<\/"
i stedet for "</". Det giver det samme i en Javascript-streng, men
HTML-fortolkeren ser ikke < og / efter hinanden.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Kim Ludvigsen (27-11-2003)
Kommentar
Fra : Kim Ludvigsen


Dato : 27-11-03 15:05

Lasse Reichstein Nielsen wrote:
>
> Kim Ludvigsen <usenet@kimludvigsen.dk> writes:

[smuk forklaring snippet]

> De (dem der skrev HTML-specifikationen) anbefaler at man skriver "<\/"
> i stedet for "</". Det giver det samme i en Javascript-streng, men
> HTML-fortolkeren ser ikke < og / efter hinanden.

Det er pænere end min nødløsning, så det vil jeg gøre, tak.

--
Mvh. Kim Ludvigsen


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste