Bernie: Script funzt im Explorer 5.5 aber in den anderen nicht.

Hallo zusammen,

Habe da ein Script zur Radiobuttonauswertung und gleichzeitiger Oeffnung der dazugehörigen Seite.

Nach Einbau herrschte kurzzeitig Freude, da es unter IE 5.5 funzt. Musste danach leider festellen, das es nur dort funzt.

Könnt Ihr mir sagen warum?

Gruss

Bernie

<script language="javascript">
<!--

function auswert(formular)
{
var seite="";
for (i=0;i<formular.length-1;i++)
{
if (formular.elements[i].checked==true)
seite=seite+formular.elements[i].value;
}
seite=seite+".htm";  
self.location.href=seite;  
}
//-->
</script>

  1. Hallo Bernie!

    Könnt Ihr mir sagen warum?

    Auf den ersten Blick nicht. Bitte gib uns mal noch den Code des Formulars mit.

    So long

    1. Hi Calocybe

      liefere ich doch sehr gerne. Besten Dank für Deine Bemühungen.

      Gruss
      Bernie

      <html>

      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
      <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
      <meta name="ProgId" content="FrontPage.Editor.Document">
      <title>Hauptteil</title>

      </head>

      <body>

      <div align="center">
        <center>
        <table border="0" width="90%">
          <tr>
            <td width="100%">

      <p><font face="Arial"><b>Blitz-Test Motivation - so geht's<br>
      <font color="#FF9900">Einmal</font> </b>Ihre allerwichtigste Motivation
      ankreuzen: Dort in 1. klicken<br>
      <b><font color="#FF9900">Einmal</font> </b>Ihre zweitwichtigste Motivation
      ankreuzen: Dort in 2. klicken<br>
      <b><font color="#FF9900">OK</font></b> drücken - Feedback kommt sekundenschnell</font></p>

      <form name="auswahl" action="" onsubmit="auswert(this);return false;">
          <div align="center">
          <table border="0" width="90%">
            <tr>
              <td width="33%" valign="middle" align="center"><font size="1" face="Arial">Erste Führungserfahrung sammeln</font>
                <p align="center"><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="a1" name="R1"><font size="1">      
                2. </font></font><font face="Arial"><input type="radio" value="a2" name="R2"></font></td>
              <td align="center" width="33%" valign="middle"><font size="1" face="Arial">Fremdsprachen anwenden</font>
                <p align="center"><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="b1" name="R1"><font size="1">      
                2. </font><input type="radio" value="b2" name="R2"></font></td>
              <td align="center" width="33%" valign="middle"><font size="1" face="Arial">Neu in die Kommunikations-Branche
                einsteigen</font>
                <p align="center"><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="c1" name="R1"><font size="1">      
                2. </font><input type="radio" value="c2" name="R2"></font></td>
            </tr>
            <tr>
              <td width="33%" valign="middle" align="center"><font size="1" face="Arial">Geldmässig etwas zulegen</font>
                <p><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="d1" name="R1"><font size="1">      
                2. </font><input type="radio" value="d2" name="R2"></font></td>
              <td align="center" width="33%" valign="middle"><font size="1" face="Arial">Internationale Kollegen oder Kontakte
                haben</font>
                <p align="center"><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="e1" name="R1"><font size="1">      
                2. </font><input type="radio" value="e2" name="R2"></font></td>
              <td align="center" width="33%" valign="middle"><font size="1" face="Arial">Die Seite wechseln (Medium - Agentur -
                Kunde)</font>
                <p align="center"><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="f1" name="R1"><font size="1">      
                2. </font><input type="radio" value="f2" name="R2"></font></td>
            </tr>
            <tr>
              <td width="33%" valign="middle" align="center"><font size="1" face="Arial">Eine andere Leitfigur werden (statt über
                Obere nur motzen)</font>
                <p><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="g1" name="R1"><font size="1">      
                2. </font><input type="radio" value="g2" name="R2"></font></td>
              <td align="center" width="33%" valign="middle"><font size="1" face="Arial">Auch im Ausland aktiv sein</font>
                <p><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="h1" name="R1"><font size="1">      
                2. </font><input type="radio" value="h2" name="R2"></font></td>
              <td align="center" width="33%" valign="middle"><font size="1" face="Arial">Den Medien-Typ wechseln
                (Print -
                Audiovisuell - Interaktiv)</font>
                <p><font size="1" face="Arial">1. </font><font face="Arial"><input type="radio" value="i1" name="R1"><font size="1">      
                2. </font><input type="radio" value="i2" name="R2"></font></td>
            </tr>
            
            
        </center>
            <tr>
              <td colspan="3">
                <p align="center"><font face="Arial"><input type="submit" value="OK" name="" style="background-color: #FF9900; font-family: Arial; color: #FFFFFF; border: 2 solid #FFFFFF"></font></td>
            </tr>
            
            
          </table>
        </div>
        </form>

      <script language="javascript">
      <!--

      function auswert(formular)
      {
      var seite="";
      for (i=0;i<formular.length-1;i++)
      {
      if (formular.elements[i].checked==true)
      seite=seite+formular.elements[i].value;
      }
      seite=seite+".htm";  /*ergänzen von htm*/
      self.location.href=seite;  /*laden der Seite*/
      }
      //-->
      </script>

      </td>
          </tr>
        </table>
      </div>

      </body>

      </html>

      1. Hallo Bernie

        »»<input type="radio" value="f1" name="R1">
        <input type="radio" value="f2" name="R2">
        <input type="radio" value="g1" name="R1">
        <input type="radio" value="g2" name="R2">

        Das Script selber funktioniert schon, du mußt nur mit den Namen der Radiobuttons sauberer arbeiten. Also gleiche Namen in Buttons der gleichen Frage. Aber verschiedene Namen in verschiedenen Fragen.

        also z.B.

        <input type="radio" value="f1" name="R1">
        <input type="radio" value="f2" name="R1">
        <input type="radio" value="g1" name="R2">
        <input type="radio" value="g2" name="R2">
        <input type="radio" value="h1" name="R3">
        <input type="radio" value="h2" name="R3">

        Viele Grüße

        Antje

        PS: Sorry, daß mein Script von gestern unvollständig war. Ich hatte es in einer kurzen Pause geschrieben.

        1. Hi Antje,

          Du entwickelst Dich je länger je mehr zu meinem rettenden Engel.

          Allerdings, wenn Du Dir das Formular anschaust (www.cytracon.com/jobsource/motivation/blitztest.htm),
          siehst Du, das der Besucher bei diesen 9 Aussagen nur 1x 1. Priorität und nur 1x 2. Prioriät anklicken darf.

          Wenn ich jedoch mit R1-R9 arbeite, kann der Besucher 9x anklicken.
          Ich versteh lediglich nicht, warum das unter IE 5.5 einwandfrei läuft, bei den anderen Versionen jedoch den Geist aufgibt.

          Kannst Du mir weiterhelfen?

          Liebe Grüsse

          Bernie

          1. Hier Bernie

            Wenn ich jedoch mit R1-R9 arbeite, kann der Besucher 9x anklicken.
            Ich versteh lediglich nicht, warum das unter IE 5.5 einwandfrei läuft, bei den anderen Versionen jedoch den Geist aufgibt.

            Im NN kommt folgende Fehlermeldung

            illegal character.

            seite=seite+".htm";  /*ergänzen von htm*/
            ...................^

            Das bedeutet, das Leerzeichen ist in einem Format gespeichert, das die Browser nicht vertragen.

            Abhilfe:

            lösche die Leerzeichen in

            seite=seite+".htm";  /*ergänzen von htm*/
            self.location.href=seite;  /*laden der Seite*/

            also so:

            seite=seite+".htm";/*ergänzen von htm*/
            self.location.href=seite;/*laden der Seite*/

            :-) ich mußte erst meine Speicheroptionen im Editor umstellen, um diesen Fehler nachvollziehen zu können.
            Interessant, dieser Fehler ist mir im Zusammenhang mit JavaScript noch nie begegnet.

            Viele Grüße

            Antje

            1. Hallo Antje

              Da bin ich ja froh, dass Du trotzdem was gelernt hast von
              meinem Fehler ;-).

              Nochmals herzlichen Dank.

              Liebe Grüsse

              Bernie

          2. Allerdings, wenn Du Dir das Formular anschaust (www.cytracon.com/jobsource/motivation/blitztest.htm),

            Ich nehme an, Du meinst http://www.cytracon.com/jobsource/motivation/auswertung/blitztest.htm?

            Da begruesst mich erstmal ein JS-Error:
                JavaScript Error:
                http://www.cytracon.com/jobsource/motivation/auswertung/blitztest.htm,
                line 94:
                illegal character.
                seite=seite+".htm";  /*ergänzen von htm*/
                ...................^

            Wahrscheinlich ist da irgendwie ein Sonderzeichen reingerutscht. Loesch am besten mal die Zeile komplett und schreib sie neu, das hilft meistens bei sowas.

            Dann ist mir doch noch was in dem JavaScript aufgefallen. In der for-Schleifen-Abbruchbedingung fragst Du nach formular.length, dann greifst Du aber auf formular.elements[i].* zu. Sollte zwar theoretisch gehen (length von Formular ist definiert als Anzahl der enthaltenen Elemente), aber sicher ist sicher; frag lieber formular.elements.length ab.

            Dann pruefst Du fuer jedes der Elemente die Eigenschaft checked ab. Du hast aber nicht nur Radio-Buttons, sondern auch einen Submit-Button. Daher am besten sowas ungefaehr:

            function auswert(formular)
            {
            var seite="";
            for (i=0;i<formular.length-1;i++)
            {

            var control = formular.elements[i];
                  if (control.type.toLowerCase() == "radio"  &&  control.checked)
                      seite = seite + control.value;
            »»  }
            »»  seite=seite+".htm";

            self.location.href=seite;  
            }
            //-->

            HTH && So long

            1. Hi Calocybe,

              Danke für Deine Bemühungen.
              Aber wie Antje festgestellt hat, waren lediglich Leerzeichen schuld daran.

              Thxs

              Bernie

        2. Sorry, falscher Link:

          Richtig: www.cytracon.com/jobsource/motivation/auswertung/blitztest.htm

  2. Also, im NC 4.5 funzt's!

    Ansonsten würde ich empfehlen, den ganzen <script> ... </script> - Block im head unterzubringen.