Frage zu slect field mit javascript
Steffen Merx
- javascript
Hi,
also ich habe eine Verstaendnisfrage hinsichtlich javascript allgemein. Warum zeigt Firefox eine leere Seite wenn ich im xhtml kopf das script tag geschlossen angebe etwa so:
funktioniert nicht:
<script src="../share/script.js" type="text/javascript" language="javascript"/>
aber funktioniert mit:
funktioniert nicht:
<script src="../share/script.js" type="text/javascript" language="javascript"> </script>
Die Zwiete Frage bezieht sich auf ein select element. Und zwar habe ich folgendes integriert in script.js:
function Selection(prefix, link) {
document.forms['form'].langselect.options[1] = new Option ("value 1",prefix + "v1/" + link);
document.forms['form'].langselect.options[2] = new Option ("value 2",prefix + "v2/" + link);
}
in der xhtml seite erfolgt der Aufruf:
<form name="form" action="">
<select title="Select" class="Select" name="langselect" onchange="window.location.href= this.form.jumpto.options[this.form.jumpto.selectedIndex].value" onclick="Selection('../../','tree/path/index.html')">
<option selected="selected" title="English">en</option>
</select>
</form>
Der Sprung zur gewuenschten Seite erfolgt aber nicht, wo liegt der Fehler?
@@Steffen Merx:
nuqneH
funktioniert nicht:
<script src="../share/script.js" type="text/javascript" language="javascript"/>aber funktioniert mit:
funktioniert nicht:
<script src="../share/script.js" type="text/javascript" language="javascript"> </script>
Wenn XHTML als 'text/html' verarbeitet wird, benutzen Browser nicht ihren X(HT)ML-Parser, sondern ihren Tag-Soup-Parser.
Die erste Variante funktioniert nicht, weil das 'script'-Element nicht geschlossen ist.
Das 'language'-Attribut kannst du wegen seiner Überflüssigkeit entfernen.
Qapla'
Verstehe ich nicht,
Die erste Variante funktioniert nicht, weil das 'script'-Element nicht geschlossen ist.
Wieso sollte das nicht geschlossen sein? es ist doch geschlossen <Name/>??
@@Steffen Merx:
nuqneH
Wieso sollte das nicht geschlossen sein? es ist doch geschlossen <Name/>??
Nein. Ein Tag-Soup-Parser kennt kein '/>'. Er ist aber so freundlich, das '/' zu ignorieren und nicht deswegen seinen Dienst zu quittieren.
Qapla'
@@Gunnar Bittersmann:
Deshalb: Kurzschreibweise in XHTML nur bei solchen Elementen verwenden, die in HTML 4 kein Endtag haben dürfen/müssen. Sag ich doch.
Qapla'
Hallo Gunnar,
danke dir fuer die Antwort ;-)
Also ich denke ich habe es jetzt soweit hinbekommen, der Code ist jetzt sauber und ziemlich kurz (so wie es sein sollte ;-)
Allerdings schon etwas komisch diese Tag Soup Parser ;-)
Da die Webseiten selbst aus einem XSL Parser kommen, kommt man wohl nicht drum herum etwas in der art zu schreiben,
<xsl:element name="script" namespace="...">
<xsl:attribute name="type">...</type>
<!-- jetzt wird es haesslich -->
xsl:text </xsl:text>
</xsl:element>
Gruss und danke fuer die schnelle Hilfe
@@Steffen Merx:
nuqneH
<!-- jetzt wird es haesslich -->
Qapla'
function Selection(prefix, link) {
Nenne eine Funktion nicht Selection, denn das Objekt Selection gibt es in einigen Browsern schon.
(Es ist der Konstruktor für Selection-Objekte.)
<select title="Select" class="Select" name="langselect" onchange="window.location.href= this.form.jumpto.options[this.form.jumpto.selectedIndex].value"
Es gibt kein Formularelement namens »jumpto« im Formular. this.options bzw. this.selectedIndex sollte doch ausreichen?
Mathias