Steffen Merx: Frage zu slect field mit 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?

  1. @@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'

    --
    Bildung lässt sich nicht downloaden. (Günther Jauch)
    1. 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/>??

      1. @@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'

        --
        Bildung lässt sich nicht downloaden. (Günther Jauch)
        1. @@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'

          --
          Bildung lässt sich nicht downloaden. (Günther Jauch)
          1. 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

            1. @@Steffen Merx:

              nuqneH

              <!-- jetzt wird es haesslich -->

              Alternative

              Qapla'

              --
              Bildung lässt sich nicht downloaden. (Günther Jauch)
  2. 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