Erzeugt Validator bei javascript-Einfügungen auch Scheinfehler?
Helmut
- javascript
Hallo,
liefert http://validator.w3.org/ manchmal Scheinfehler, wenn JS im Spiel ist?
Der folgende Code-Ausschnitt entstammt einer _funktionierenden_ xhtml-Site.
Der Validator meldet reichlich Fehler (s.u.). Sind die ernst zu nehmen?
********Codeusschnitt*****************************************************
<form action="select.htm">
<p>Bitte Titel wählen:</p>
<select name="Titel" size="10"
onclick="changeMP3(this.form.Titel.options[this.form.Titel.selectedIndex].value)">
<script type="text/javascript">
document.write('<option id="Weihnachtsmusik" '+
'title="Weihnachtsmusik? Na ja, bald ist es wieder soweit! '+
'------------------------------------------------------------------------------------------------------- '+
'Spike Jones - All I Want for Christmas Is My Two Front Teeth "'+
'value="./Weihnachten/TwoFrontTeeth.mp3">Weihnachtsmusik</option>');
var zeilen="";
for (j=0;j<=n1;j=j+1) // 1. for, d.h. Anfangsgruppe der Auswahlliste
{zeilen=zeilen+'<option title="'+Details[j]+'" value="'+Song[j]+'">'+SongTitel[j]+'</option>'+'<br />';}
for (j=10;j<Song.length;j=j+1) // 2. for, d.h. die eigentlichen Titel
{zeilen=zeilen+'<option title="'+Details[j]+'" value="'+Song[j]+'">'+SongTitel[j]+'</option>'+'<br />';}
document.write(zeilen) // Alle Optionen der Titel-Auswahlliste
</script>
</select>
<br />
<p class="tooltip">Hilfe<span>Der Player ist intuitiv bedienbar. Intuition bitte einschalten!</span></p>
</form>
********** Fehler ************************************************
Line 266, Column 19: character "<" is the first character of a delimiter but occurred as data
for (j=0;j<=n1;j=j+1) ...
Line 267, Column 75: document type does not allow element "option" here
…itle="'+Details[j]+'" value="'+Song[j]+'">'+SongTitel[j]+'</option>'+'<br />';}
Line 267, Column 109: document type does not allow element "br" here
…'">'+SongTitel[j]+'</option>'+'<br />';}
UND SO WEITER
********************************************************************
Mit fragenden Grüßem, Helmut
liefert http://validator.w3.org/ manchmal Scheinfehler, wenn JS im Spiel ist?
Nein - üblicherweise nicht.
script erwartet als Kindelemente auschließlich http://de.selfhtml.org/html/referenz/elemente.htm#script@title=#PCDATA.
liefert http://validator.w3.org/ manchmal Scheinfehler, wenn JS im Spiel ist?
Nein.
Der folgende Code-Ausschnitt entstammt einer _funktionierenden_ xhtml-Site.
http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style
<select name="Titel" size="10"
onclick="changeMP3(this.form.Titel.options[this.form.Titel.selectedIndex].value)">
warum so umständlich? this.form.Titel ist gleich this
Struppi.
warum so umständlich? this.form.Titel ist gleich this
Wird geändert!
http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style
Der Link hat sehr geholfen. Nachdem ich JS-Codes so
---------------------------------
<script type="text/javascript">
/* <![CDATA[ */
.....JS-Code.....
/* ]]> */
</script>
--------------------------------
einkleide, hat sich die Fehlerzahl von 42 auf 2 reduziert. Schöner Erfolg!
Hier sind die beiden (Rest-)Fehler innerhalb der form-Umgebung:
Line 259, Column 31: document type does not allow element "script" here
<script type="text/javascript">/* <![CDATA[ */
Line 272, Column 9: end tag for "select" which is not finished
</select>
Ich vermute, die hängen zusammen. Ist es unzulässig, im Formular options mit JS zu generieren?
Gruß, Helmut
Hallo,
Line 259, Column 31: document type does not allow element "script" here
<script type="text/javascript">/* <![CDATA[ */Line 272, Column 9: end tag for "select" which is not finished
</select>Ich vermute, die hängen zusammen. Ist es unzulässig, im Formular options mit JS zu generieren?
nein, das nicht verboten. Verboten ist aber,
* dass ein select-Element leer ist (keine options hat)
* dass ein select-Element andere Kinder als option hat.
Du hast da aber:
<select>
<script></script>
</select>
Und das ist ungültiges HTML. Wenn schon, dann müsstest du das ganze select-Element einschließlich seiner Start- und Endtags mit Javascript ausgeben. Schöner wäre natürlich, wenn du zugunsten von DOM-Methoden auf document.write() verzichten würdest.
Ciao,
Martin
... Wenn schon, dann müsstest du das ganze select-Element einschließlich seiner Start- und Endtags mit Javascript ausgeben. Schöner wäre natürlich, wenn du zugunsten von DOM-Methoden auf document.write() verzichten würdest.
Ciao,
Martin
Ich hab's nochmal mit document.write() gemacht und der Validator hat "PASSED" gesagt. Danke für die gute Beratung. Die Vermutung "Scheinfehler2 nehme ich damit zurück.
Gruß, Helmut
@@Helmut:
nuqneH
http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style
<script type="text/javascript">
/* <![CDATA[ */
.....JS-Code.....
/* ]]> */
</script>
Ja, das steht(leider) wirklich so in SELFHTML. Übersichtlicher ist IMHO die einzeilige Auskommtierung:
<script type="text/javascript">
[code lang=xml]//<![CDATA[
[code lang=javascript].....JS-Code.....
//]]>[/code]
</script>[/code]
Qapla'