Problem mit Auswahlliste in anderem Fenster
Raphael
- javascript
Moin,
ich habe zwei Fenster. Das erste ist ein grösseres Formular und das zweite eine Unterabfrage für eine Auswahlliste auf dem ersten Formular. Nun möchte ich die Auswahl von der zweiten Seite aus in die Auswahlliste auf der ersten Seite schreiben, um ein erneutes laden zu umgehen. Dazu verwende ich folgenden Code:
NeuerEintrag = new Option(vbez.options[vbez.selectedIndex].text,vbez.value,false,true);
opener.vbez.options[opener.vbez.length] = NeuerEintrag;
Ich habe opener.vbez.length auch mal separat getestet und bekomme die korrekte Länge angezeigt.
Nun mal wieder die große Frage:
Warum funktioniert das nicht?
Gruß,
Raphael
ich habe zwei Fenster. Das erste ist ein grösseres Formular und das zweite eine Unterabfrage für eine Auswahlliste auf dem ersten Formular. Nun möchte ich die Auswahl von der zweiten Seite aus in die Auswahlliste auf der ersten Seite schreiben, um ein erneutes laden zu umgehen. Dazu verwende ich folgenden Code:
NeuerEintrag = new Option(vbez.options[vbez.selectedIndex].text,vbez.value,false,true);
opener.vbez.options[opener.vbez.length] = NeuerEintrag;
Ich habe opener.vbez.length auch mal separat getestet und bekomme die korrekte Länge angezeigt.
1. Mit welchen Browser?
2. du kennst http://glasgoogle.de
3. solltest du bei größen JS immer mit Mozilla entwickeln, der zeigt dir auch an wen was falsch ist.
nun zu deinem Problem.
einmal verwendest du vbez. Hast du dir mal den Wert vbez.options[vbez.selectedIndex].text anzeigen lassen?
und dann verwendest du opener.vbez
Was immer vbez ist, es ist mit Sicherheit keine Eigenschaft eines window (opener ist ein window objekt). Ich find sie zumindest hier nicht http://selfhtml.teamone.de/javascript/objekte/window.htm
Ich nehm an es ist ein Formular und das ist Teil eines document http://selfhtml.teamone.de/javascript/objekte/document.htm
Struppi.
Hi,
ich brauche nur Scripts die mit dem IE5.x bzw IE6 kompatibel sind, da es sich um Intranet handelt.
Die beiden Objekte vbez sind Auswahllisten, eine auf dem offenen Fenster in dem das Script läuft und eine im opener.
Ja ich habe die Zugriffe auf beide der Auswahllisten ausprobiert und beide liefern richtige Werte, nur das Hinzufügen funktioniert nicht.
Jetzt gehts hoffentlich auch ohne Glaskugel ;)
Raphael
ich brauche nur Scripts die mit dem IE5.x bzw IE6 kompatibel sind, da es sich um Intranet handelt.
Darum geht es nicht. Es geht wesentlich einfacher mit Mozilla Skript zu entwickeln , da dieser dir auch wirklich die Fehler anzeigt und vor allem auch wo sie auftreten. Mit dem IE bist du schnell am Ende wie du merkst. und in aller Regel laufen die Skripte die im MZ funktionieren auch im IE.
Die beiden Objekte vbez sind Auswahllisten, eine auf dem offenen Fenster in dem das Script läuft und eine im opener.
Ja ich habe die Zugriffe auf beide der Auswahllisten ausprobiert und beide liefern richtige Werte, nur das Hinzufügen funktioniert nicht.
Das kann ja nicht sein. Es kann nicht sein das alles richtig ist und doch nicht funktioniert.
Wie gesagt, das Formular ist Teil des document und nicht des window. Ansonten ist dein Code (zumindest der Teil den du uns gibst) richtig.
Jetzt gehts hoffentlich auch ohne Glaskugel ;)
Ich weiß nicht ob du die Seite gelesen hast, dort wird erklärt, wie du an die Fehlermeldung im MZ kommst und diese wäre für die Lösung deines Problemes wahrscheinlich wichtig.
Struppi.
also ich hab auch grad nen problem mit dem options-array.
ich hab also zwei select felder und will die markierten
inhalte per button (welcher eine js-funktion ausführt)
hin und her schieben können.
im mozilla funtioniert das auch wunderbar! nur mein ie6
hat da nen problem mit.
den fehler hab ich eingegrenzt und es liegt tatsächlich
am einfügen in das options array. sieht bei mir so aus:
trg.options[trg.options.length] = src.options[count];
trg und src sind jeweils die selects.
löschen ist kein prob, auch werden die options aus
dem select entwernt sobald man diese in eine variable
übergibt. aber ein option ins select reinzukgriegen
scheint nicht zu gehen.
:(
ok habs jetzt aufm ie6 zum laufen gebracht. scheibar
kann der ie die options nicht direkt kopieren oder
diese werden 'verkrüppelt', keine ahnung.
die lösung ist text und value aus der quelle
auszulesen und davon eine neue option zu erstellen.
natürlich muss man den alten löschen.
opt = new Option(src.options[count].text, src.options[count].value);
src.options[count] = null;
trg.options[trg.options.length] = opt;
@raphael
in selfhtml steht übrigens drinn das der IE5 es nicht
gebacken kriegt auf selects in anderen fenstern zu
zu greifen.
http://selfhtml.teamone.de/javascript/objekte/options.htm#neue_elemente
...steht unten bei "Beachten Sie:"...
Hi, ich hab das .options bei der Abfrage der Länge ergänzt und schon schmiert der ganze IE6 ab. Das Problem scheint sich also nicht auf den IE5 zu beschränken. Trotzdem danke, ich werde dann mal nach einer Alternative suchen.
Raphael