Heizer: forms.elements unter Netscape 4.x

Liebes Forum

Ich möchte meiner Seite nun eine Startseite hinzufügen, um zwischen mehrerern Versionen der Seite auswählen zu können. Es gibt da eine <select>-Liste mit den drei Versionen und eine <textarea>(anzeige.beschreibung) in der eine kurze Beschreibung stehen sollte. die folgende Funktion wird mit onChange aus der <select>-Auswahlliste aufgerufen.

In IE 6, Opera 6 & Mozilla 1.0RC1 funktioniert das wunderbar, leider aber nicht im Netscape 4.76 (alle für Windows). Dabei dachte ich, das forms und elements auch von diesem Interpretiert werden.

Keine Ahnung wo der Fehler liegen könnte, gebe aber offen zu, daß ich mich mit den älteren Versionen von JS nie wirklich beschäftigt habe. Wäre dankbar für jeden Hinweis.

Heizer

p.s.: Funktioniert das auch in älteren IE's? Habe "leider" keine.

Die Auswahlliste:

<form name="auswahl" action="home.php" method="get">
    <select size='1' name='browser' id='browser' onchange="discription();">
    <option value='css'>Cascading Style Sheets</option>
    <option value='tables'>Tabellen-Layout</option>
    <option value='html20'>HTML 2.0</option>
    </select>
</form>

Die Textarea:

<form name='anzeige'>
<textarea cols='48' rows='15' name='beschreibung' id='beschreibung' readonly='readonly'></textarea>

Die JS-Funktion:

function discription()
{
var browser;
var cssbeschreibung = "CSS Beschreibung";
var tablesbeschreibung = "Tables Beschreibung";
var html20beschreibung = "HTML 2.0 Beschreibung";

browser = document.forms["auswahl"].elements["browser"].value;
    if (browser == "css") {
        document.anzeige.beschreibung.value = cssbeschreibung;
        }
    if (browser == "tables") {
        document.anzeige.beschreibung.value = tablesbeschreibung;
        }
    if (browser == "html20") {
        document.anzeige.beschreibung.value = html20beschreibung;
        }
}

  1. Hallo,
    Netscape 4 kann entweder document.forms[0].elements[0]erkennen oder document.formularname.elementname aber erst bei onload, z.B.
    <body onload="initDiscription();">
    Ist die Seite nicht vollständig geladen melden die Scriptfunktionen no proberties, ausserdem ist für eine Crossbrowserabfrage ID="Elementname" und NAME="Elementname" erforderlich. Ausserdem ist die ID case-sensitive, also ElementName anders als Elementname.

    Für eine korrekte Fehlernanalyse ist allerdings der komplette Code der HTML-Seite erforderlich. Übrigens ist bei Option und select selectIndex erforderlich und nicht value, wenn es bei allen Browsern funktionieren soll.

    Im Übrigen kannst DU bei neuen Browsern auch mit innerHTML arbeiten, nur Opera und Netscape brauchen entweder document.write oder Ausgaben über value.

    Mehr gern per eMail ;-)

    1. Hallo,
      Netscape 4 kann entweder document.forms[0].elements[0]erkennen oder document.formularname.elementname aber erst bei onload, z.B.
      <body onload="initDiscription();">

      die Funktion wird erst mit onchange aufgerufen. warum schreibst du "initDiscription();"? meine Funktion heißt "discription();". Hat das einen Grund?

      Für eine korrekte Fehlernanalyse ist allerdings der komplette Code der HTML-Seite erforderlich.

      s.u.

      Übrigens ist bei Option und select selectIndex erforderlich und nicht value, wenn es bei allen Browsern funktionieren soll.

      Das funktioniert aber in Mozilla nicht! Ansonsten verstehe ich dich falsch?

      Im Übrigen kannst DU bei neuen Browsern auch mit innerHTML arbeiten, nur Opera und Netscape brauchen entweder document.write oder Ausgaben über value.

      Was ist innerHTML? welche Browser außer Opera und Netscape meinst du denn ;-)

      Mehr gern per eMail ;-)

      Hab leider ein paar Tage keinen Emailzugang, deshalb jetzt der Quelltext im gesamten, nur die Inhalte herausgestrichen:

      Vielen dank

      <?
      $headers = getallheaders();
      $useragent = $headers['User-Agent'];
      if (stristr($useragent,"opera")) $browser = "tables";
      elseif (stristr($useragent,"compatible")) $browser = "tables";
      elseif (stristr($useragent,"Mozilla/5")) $browser = "css";
      elseif (stristr($useragent,"Mozilla")) $browser = "html20";
      else $browser = "tables";
      ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html><head>
      <title>Titel</title>

      <script type='text/javascript'>
      <!--
      function discription()
      {
      var browser;
      var cssbeschreibung = "CSS Beschreibung";
      var tablesbeschreibung = "Tables Beschreibung";
      var html20beschreibung = "HTML 2.0 Beschreibung";

      if(document.forms) {
          browser = document.forms[0].elements[0].value;
          if (browser == "css") {
              document.forms[1].elements[0].value = cssbeschreibung;
              }
          if (browser == "tables") {
              document.forms[1].elements[0].value = tablesbeschreibung;
              }
          if (browser == "html20") {
              document.forms[1].elements[0].value = html20beschreibung;
              }
          }
      }
      //-->
      </script>
      </head>
      <body background='#6EBDE1'>
      <table border='0' cellspacing='10' style="margin:auto;"><tr>
      <td valign='top' align='center'>
          <h1>Willkommen!</h1>
          <h3>Kunst, Kommerz, Kitsch, Klischees</h3>
          <img src="images/css/ff_watermark.png" width="361" height="117" alt="ForestFactory" border="0" />
          <form name="auswahl" id="auswahl" action="home.php" method="get">
          <h3>Bitte wählen Sie die Version für ihren Browser aus!</h3>
          <select size='1' name='browser' id='browser' onchange="discription();">
          <option value='css'<? if ($browser == "css") echo "selected='selected'";?>>Cascading Style Sheets</option>
          <option value='tables'<? if ($browser == "tables") echo "selected='selected'";?>>Tabellen-Layout</option>
          <option value='html20'<? if ($browser == "html20") echo "selected='selected'";?>>HTML 2.0</option>
          </select>
          <input type='submit' value='weiter > >'>
          </form>
      </td>
      <td>
      <form name='anzeige' id='anzeige'>
      <textarea cols='48' rows='15' name='beschreibung' id='beschreibung' readonly='readonly'>
      </textarea>
      </form>
      </td>
      </tr></table>
      </body>
      </html>