Carsten: Netscape-Problem mit select per document.write

Beitrag lesen

Hallo Sebastian,

Bei mir lief es zunächst gar nicht (immer alle Optionen lesbar.)
Nach einigem rumfummeln ging es dann. Zwei Fehler gefunden, der Erste erklärt warum
die erste Option immer weg war, der Zweite wäre dir später beim Testen auch
noch aufgefallen. Nur geändert hat das nix, der eigentliche Fehler war immer
noch da. Die \n und das Schreiben in eine Variable (mt) hatte ich mehr der
Übersichtlichkeit wegen reingebaut. (Das macht die wysiwyg-Quelltext Ansicht
vom NN übersichtlicher. (Leider wird die aber nur einmal nach Programmstart
neu aufgebaut. ->testen beenden neustarten...)  
Dann hab ich testhalber mal writemenu() mt zurückgeben lassen und das erst im
HTML-Teil per document.write ausgegeben - seitdem geht es, auch nachdem ich es
zurückgebaut habe.
Sehr merkwürdig ... aber vielleicht solltest du jetzt mal testen ob es so bei
dir geht.

function writemenu()
{
  mt='<form name="selector" title="Wählen Sie aus dem Menü ..." \n'
  +'onMouseOver="window.status='Wählen Sie aus dem Menü ...';return true" onMouseOut="window.status=''">'
  +'\n<select size="1" name="link" width="200" class="select1" \n'
  +'onChange="go(this.form.link.options[this.form.link.options.selectedIndex].value)">' // ####### ein fehlendes > ergänzt
  
  // Menüzeile mit fixen Werten schreiben
  +'\n<option value="empty"></option>' // Wird nicht angezeigt (?!)
  +'\n<option value="headline" selected>Schnellnavigation</option>'
  +'\n<option value="empty"></option>'
  +'\n<option value="gesamt.htm">Gesamtliste</option>'
  +'\n<option value="shopping.htm">Shopping</option>'
  +'\n<option value="kultur.htm">Kultur und Unterhaltung</option>'
  +'\n<option value="gastro.htm">Gastronomie, Hotels</option>'
  +'\n<option value="dienstleister.htm">Dienstleister</option>'
  +'\n<option value="Institutionen.htm">Institutionen</option>'
  +'\n<option value="umgebung.htm">Umgebung</option>'
  +'\n<option value="neu.htm">Neue Einträge</option>'
  +'\n<option value="sponsoren.htm">Sponsoren</option>'
  +'\n<option value="empty" selected></option>';
  
  
  for (var i=0; i<items.length; i++)
  {
    // Menütext begrenzen für Netscape
    var theme_abbrev;  // abgekürzter Menütext
    if(items[i].theme.length > 28)
    {
      theme_abbrev = (items[i].theme.substring(0, 28) + "...")
    }
    else
    {
      theme_abbrev = items[i].theme
    };
    // Menüzeile mit Werten aus Array schreiben
    {
      mt+='\n<option value="'+items[i].adress+'">'+theme_abbrev + '</option>'; // ######## 2 x \ vor ' entfernt
    }
  }
  mt+='\n</select>'+'\n</form>\n';

document.write(mt);
  
}

Die Tabellenschachtelung war irgendwie nicht ganz ok, (nicht, dass das was
geändert hätte) hier der 'fehlerfreie' code mit dem ich getestet habe:

<html><title>MENU TEST</title>
<script language="JavaScript" src="menu.js" type="text/javascript">
</script>
<body>
<table><tr><td>  <!-- ####### -->
<!-- Tabelle Dropdownmenü -->
<table cellspacing="0" cellpadding="0" width="200" border="0">
<tr align="right">
<td><img height="10" src="pictures/onepixel.gif" alt="" width="9"></td>
<td class="link3">
<!-- Dropdownmenü -->
<script language="JavaScript" type="text/javascript">
<!--
writemenu();
//-->
</script>
<noscript><a href="liste.htm" title="Gesamtliste"><img src="pictures/wishlist.gif" width="20" height="11" border="0"
alt="Gesamtliste">Gesamtliste </a></noscript></td>
</tr>
</table>
</td>
</tr>
</table>

so, jetzt geh ich aber ins Bett,
Carsten