Optionen zum Select hinzufügen bei IE5.0
Tobias
- javascript
Hi,
habe hier ein mächtiges Problem. Und zwar funktioniert folgende Funktion NICHT im IE5.0 (navigator.appname = 4.0 (compatible; MSIE 5.01; Windows NT ):
function addOption(parent,myvalue,mytext) {
var added = new Option(mytext, myvalue, false, false);
parent.options[parent.options.length] = added;
//var newObj = document.createElement("OPTION");
//newObj.text = mytext
//newObj.value = myvalue;
//parent.options.appendChild(newObj);
}
beide Lösungen in der Funktion funktionieren nicht. Der BRowser stürzt entweder komplett mit einer nichtssagenden Fehlermeldung ab oder lädt sich an dieser Position tot wonach nur noch ein Neustart des Browsewrs hilft. Der installierte MS Scriptdebugger meldet sich auch nicht.
Alle anderen MSIE Browser ab 5.5 funktionieren bestens.
Habe auch keine Möglichkeit die 5.0 Browser upzugraden :(
ein Beispiel liegt auf u.a. URL.
http://mitglied.lycos.de/donfaustino/js-test.htm
Wer kennt das Prob und weiß Rat?
grüsse
Tobias
http://privat.traffic-eye.de
Hallo Tobias,
function addOption(parent,myvalue,mytext) {
var added = new Option(mytext, myvalue, false, false);
parent.options[parent.options.length] = added;
^^^^^^
Letzter Absatz: http://selfhtml.teamone.de//javascript/objekte/options.htm#neue_elemente
HTH
Jochen
function addOption(parent,myvalue,mytext) {
var added = new Option(mytext, myvalue, false, false);
parent.options[parent.options.length] = added;
^^^^^^Letzter Absatz: http://selfhtml.teamone.de//javascript/objekte/options.htm#neue_elemente
Abschnitt habe ich gelesen: Zitat:
"Im Internet Explorer 5.0 können Sie nicht fensterübergreifend eine Auswahlliste ändern."
Ich habe jedoch diese funktion innerhalb einer JS-Klasse eingefügt und das JS Script mittels src="" geladen. Im Fenster will ich dann die Liste mittels onClick="meineKlasse.addOption();" ändern => Absturz
Ich benutze in meinen Seiten keine Frames.
hmmm, was nu?
Tobias
Hallo Tobias,
Letzter Absatz: http://selfhtml.teamone.de//javascript/objekte/options.htm#neue_elemente
Abschnitt habe ich gelesen: Zitat:
"Im Internet Explorer 5.0 können Sie nicht fensterübergreifend eine Auswahlliste ändern."
Ich habe jedoch diese funktion innerhalb einer JS-Klasse eingefügt und das JS Script mittels src="" geladen.
Ok, das hatte ich mir nicht so genau angesehen.
Im Fenster will ich dann die Liste mittels onClick="meineKlasse.addOption();" ändern => Absturz
Dein Beispiel http://mitglied.lycos.de/donfaustino/js-test.htm ist sehr undurchsichtig. Sorry, aber ich bin da nicht durchgestiegen. Ideal wäre ein einfacher, auf das wesentliche reduzierter Test.
Hinzu kommt, dass ich hier keinen 5.0er IE zum Ausprobieren habe. Stürzt er dir hier (in der unteren Listbox einen Eintrag selektieren und "Auswählen") auch ab?
http://www.maxx4u.de/eigene2.html?zeilen=4&kategorie=0
Grüße,
Jochen
Hi Jochen,
Dein Beispiel http://mitglied.lycos.de/donfaustino/js-test.htm ist sehr undurchsichtig. Sorry, aber ich bin da nicht durchgestiegen. Ideal wäre ein einfacher, auf das wesentliche reduzierter Test.
der ist schon reduziert. Habe nochmal die etwas überarbeitete JS-Klasse hochgeladen. Die wichtigste Funktion ist hierbei die addOption(...) Funktion. Nehme ich da die Select-Zuweisung heraus, klappt es mit dem IE5. Ist sie drin, dann Absturz oder Totladen -> Reset des IE
Hinzu kommt, dass ich hier keinen 5.0er IE zum Ausprobieren habe. Stürzt er dir hier (in der unteren Listbox einen Eintrag selektieren und "Auswählen") auch ab? http://www.maxx4u.de/eigene2.html?zeilen=4&kategorie=0
damit klappt es. Musste aber die komplette seite kopieren und mittels einer lokalen Seite testen. Sitze hinter nem PRoxy und der Rechner fürs INet hat IE6.
weiß auch nicht weiter. Die Funktion ist doch nur in einer externen JS-Datei und alles OHNE Frames :( :(
Tobias
Sorry Tobias,
weiß auch nicht weiter. Die Funktion ist doch nur in einer externen JS-Datei und alles OHNE Frames :( :(
ich auch nicht. Ich kann meinen Vorschlag nur noch einmal wiederholen.
Reduziere dein javascript solange bis es funktioniert. Baue dann nach und nach einzelne Funktionalitäten wieder hinzu. Und isoliere so den Übeltäter.
Die wichtigste Funktion ist hierbei die addOption(...) Funktion. Nehme ich da die Select-Zuweisung heraus, klappt es mit dem IE5. Ist sie drin, dann Absturz oder Totladen -> Reset des IE
Der nicht unbedingt an dieser Stelle sitzen muss. Das ein
neu = new Option(...) prinzipiell funktioniert haben wir überprüft.
Grüße,
Jochen
konnte es noch weiter lokalisieren. wenn ich eine dynamische Liste erstelle
this.tempsource = document.createElement("SELECT"); var added = new Option(mytext, myvalue, false, false); this.tempsource.options[this.tempsource.options.length] = added;
und dann dieser eine OPTION zuordne, dann gibts das beschriebene Probleme. Wenn ich jedoch einer "echten" vorhandenen Liste eine Option zuordne, dann funzt es.
Gibt es noch eine bessere möglichkeit eine Liste dynamisch zu erstellen? Ich möchte mit dieser nur die Elemente der vorhandenen zwischenspeichern.
tobias
Hallo tobias,
wenn ich eine dynamische Liste erstelle
und dann dieser eine OPTION zuordne, dann gibts das beschriebene Probleme.
Wenn ich jedoch einer "echten" vorhandenen Liste eine Option zuordne, dann funzt es. Ich möchte mit dieser nur die Elemente der vorhandenen zwischenspeichern.
Wenn es nur um die Zwischenspeicherung geht, und wenn es mit einer "echten" Liste funktioniert. Hast du schon eine versteckte Liste in Betracht gezogen?
"visibility:hidden;" oder besser vielleicht "display:none;"
Grüße,
Jochen
Hi Jochen
Wenn es nur um die Zwischenspeicherung geht, und wenn es mit einer "echten" Liste funktioniert. Hast du schon eine versteckte Liste in Betracht gezogen? "visibility:hidden;" oder besser vielleicht "display:none;"
das wäre für meine Zwecke seeehr unpraktisch weil ich die ganze funktionalität in einer Klasse gekapselt habe und diese Klasse universell einsetzbar sein soll.
Aber jetzt habe ich es hinbekommen!!!!
Mal kurz die Auflösung für alle anderen:
Fehler: this.target_options = document.createElement("SELECT"); for (var i=0; i < this.source.options.length; i++) { this.addOption(this.source_options,this.source.options[i].value,this.source.options[i].text); } function addOption(myparent,myvalue,mytext) { var added = new Option(mytext, myvalue, false, false); myparent.options[myparent.options.length] = added; }
Lösung: this.tempTarget = new Array(); for (i=0; i < this.target.options.length; i++) { this.tempTarget[i] = new Array(); this.tempTarget[i]["text"] = this.target.options[i].text; this.tempTarget[i]["value"] = this.target.options[i].value; this.tempTarget[i]["selected"] = this.target.options[i].selected; }
Man beachte hierbei die Umstellung der temorären Liste in ein assoziatives Array. So funzt es auch im IE5 freu
grüsse tobias http://privat.traffic-eye.de