onChange funzt nicht
NicoleK
- javascript
0 wahsaga0 NicoleK0 wahsaga
0 Felix Riesterer0 NicoleK0 wahsaga
Hallo,
ich habe drei Select-Felder die untereinander abhängig sind.
Box1 -> Box2 -> Box3
umgesetzt ist diese Abhängigkeit mit Hilfe von AJAX.
Also wenn ich Box1 auswähle wird durch ein onChange-Event Box2 gefüllt. Das funktioniert auch einwandfrei. Ich kann auch mehrmals die Auswahl in Box1 ändern, jedes mal wird Box2 mitgeändert.
Wenn ich Box2 ändere wird wiederum durch ein onChange-Event Box3 gefüllt. Auch hier kann ich die Wahl bei Box2 beliebig oft ändern und Box3 ändert sich mit.
Das Problem liegt aber nach der Auswahl von Box2 und dem Ausführen des damit verbunden onChange-Events wird, wenn ich Box1 ändere das onChange-Event nicht mehr ausgelöst.
Wodurch könnte diese Fehler verursacht werden?
Vielen Dank schon mal im Voraus
hi,
Wodurch könnte diese Fehler verursacht werden?
Herr Doktor, ich haben Aua, wo ich krank?
http://forum.de.selfhtml.org/hilfe/charta.htm#tipps-fuer-fragende
gruß,
wahsaga
hi,
Wodurch könnte diese Fehler verursacht werden?
Herr Doktor, ich haben Aua, wo ich krank?
http://forum.de.selfhtml.org/hilfe/charta.htm#tipps-fuer-fragende
gruß,
wahsaga
Das Problem liegt aber nach der Auswahl von Box2 und dem Ausführen »» des damit verbunden onChange-Events wird, wenn ich Box1 ändere das »» onChange-Event nicht mehr ausgelöst.
Wodurch könnte diese Fehler verursacht werden?
Ich weiß ja nicht was ich noch schreiben soll????
hi,
Das Problem liegt aber nach der Auswahl von Box2 und dem Ausführen »» des damit verbunden onChange-Events wird, wenn ich Box1 ändere das »» onChange-Event nicht mehr ausgelöst.
Wodurch könnte diese Fehler verursacht werden?
Ich wollte dir dezent mitteilen, dass wir hier nicht raten können, _wo_ du einen Fehler gemacht hast.
Ich weiß ja nicht was ich noch schreiben soll????
Wenn du die verlinkten Tipps für Fragende aufmerksam gelesen hättest - oder dies jetzt bitte erst mal nachholst - hätte dir dort beim dritten Punkt in der Liste eigentlich auffallen sollen, was für die nachvollziehbare Beschreibung eines solchen Problems ziemlich wesentlich ist.
gruß,
wahsaga
Lieber wahsaga,
Wodurch könnte diese Fehler verursacht werden?
Herr Doktor, ich haben Aua, wo ich krank?
Also ich gebe zu, dass ich das Problem des Posters verstanden habe! So ungeschickt war seine Beschreibung dann doch nicht!
Der Denkfehler des OPs ist der, dass onChange nicht feuert, wenn per Script der Wert (oder muss es heißen: die Auswahl) eines Select-Feldes geändert wird.
Wenn man die onChange-Wirkung eines Formular-Elementes erhalten will, dessen Wert per Script geändert wurde, dann muss man (sozusagen per Hand) die im onChange-Eventhandler notierte Funktion selbst aufrufen, damit die Reaktion stattfindet. Schematische Darstellung:
+-------------------------+ +-------------------------+
|box1 onChange="f1(this)";| |box2 onChange="f2(this)";|
+-------------------------+ +-------------------------+
+-------------------------+
|box3 onChange="f3(this)";|
+-------------------------+
Code:
function f1(htmlElement) {
bla.blubb.xy();
f2(objekt_box2);
}
function f2 {
blubb.blabb.abcd(htmlElement);
f3(objekt_box3);
}
function f3(htmlElement) {
blah.blah();
}
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
ich habe jetzt leider nicht verstanden wie genau ich das machen muss.
Aber noch mal kurz zur Erklärung:
Ich mache es mal an einem Beispiel:
also Box1: Kontinente
Box2: Länder
Box3: Bundesländer
am Anfang muss der Kontinent gewählt werden um die Länder anzuzeigen. Die Box1 ist bereits gefüllt.
Wenn ich Europa wähle kommen die europäischen Länder, wenn ich danach Afrika wähle kommen die afrikanischen Länder in die Box2. Das funktioniert.
Nun kann ich in Box2 die Länder auswählen und mir werden in Box3 die dazugehörigen Bundesländer angezeigt. Wähle ich Deutschland gekomme ich die deutschen Bundesländer. Wähle ich danach Frankreich werden mir in Box3 die Fanzösischen Bezirke angezeigt. Das funktioniert auch.
Wenn ich aber nach dem Wählen eines Landes und dem damit verbundenen OnChange-Event versuche noch mal den Kontinent zu ändern wird gar nicht erst das OnChange-Event für Box1 ausgeführt.
MfG
Lieber NicoleK,
ich habe jetzt leider nicht verstanden wie genau ich das machen muss.
Dann lies meinen Post nocheinmal _genau_ durch! ich denke, ich habe das Wesentliche genannt und eine Lösung aufgezeigt.
Für Dich wiederhole ich nocheinmal meinen wesentlichsten Hinweis:
Der Denkfehler des OPs ist der, dass onChange nicht feuert, wenn per Script der Wert (oder muss es heißen: die Auswahl) eines Select-Feldes geändert wird.
Wenn man die onChange-Wirkung eines Formular-Elementes erhalten will, dessen Wert per Script geändert wurde, dann muss man (sozusagen per Hand) die im onChange-Eventhandler notierte Funktion selbst aufrufen, damit die Reaktion stattfindet.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
nein ich habe nicht verstanden wie genau ich den expliziten Aufruf der Funktionen umsetzen muss.
Danke für die freundliche Hilfe, auch wenn mir manches genauer erklärt werden muss.
Liebe Nicole,
ich mach' mal Einzelschritt, ok?
1. User ändert auf der Seite die Auswahl in box1. Browser "merkt" das und feuert den onChange-Eventhandler, was dazu führt, dass die Funktion aus Deinem onchange-Attribut in Deiner box1 ausgeführt wird.
1.a. Die Funktion aus dem onChange-Attribut ändert den Auswahlwert in box2 dynamisch. Daher sieht der User auch in box2 einen veränderten Wert. Der Browser ist hiermit fertig, da er _nicht_ "merkt", dass sich in box2 etwas verändert hat. Daher führt er auch die Funktion aus dem onChange-Attribut in box2 _nicht_ aus.
2. User ändert den Auswahlwert in box2. Browser reagiert und führt passenden Javascript-Code (Funktion des onChange-Attributes in box2) aus. Dadurch sieht der User einen geänderten Wert in box3 (wegen der Javascript-Funktion). Der Browser ist auch hier fertig.
Der Browser ruft nur dann eine Funktion aus einem onChange-Attribut auf, wenn der User (und nicht irgendein Script) in der entsprechenden Auswahl etwas verändert hat.
Deine Lösung:
zu 1.a. Die Funktion ändert nicht nur den Wert in box2, sondern ruft auch noch die dortige onChange-Funktion auf, damit die Auswirkungen der Änderungen in ihr (box2) sich auch auf box3 auswirken.
Wenn Du nun Deinen Code (HTML-Teil auf das Nötigste gekürzt! JS-Teil nur die Funktionen!) postest, dann kann ich Dir zeigen, wie Du die entsprechenden Funktionen anpassen musst.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo,
Der Browser ist hiermit fertig, da er _nicht_ "merkt", dass sich in box2 etwas verändert hat. Daher führt er auch die Funktion aus dem onChange-Attribut in box2 _nicht_ aus.
Der Browser ruft nur dann eine Funktion aus einem onChange-Attribut auf, wenn der User (und nicht irgendein Script) in der entsprechenden Auswahl etwas verändert hat.
Genau exakt das gleiche Problem habe ich jetzt auch. Warum ist das so geregelt das onchange nicht feuert, wenn ein script da etwas ändert????
zu 1.a. Die Funktion ändert nicht nur den Wert in box2, sondern ruft auch noch die dortige onChange-Funktion auf, damit die Auswirkungen der Änderungen in ihr (box2) sich auch auf box3 auswirken.
Was mache ich denn wenn ich gar nicht wissen kann, welche funktion da aufgerufen wird, da ich objektorientiert arbeite und ich nicht weiß welche instanz dafür zuständig ist? Ich versuche es mal ein wenig zu verdeutlichen:
Jede Zeile mit einem Spiel ist eine eigene Instanz, ohne ID oder Namen sind also für sich abgeschlossen. Oben in der ersten Zeile sind Radiobuttons, die den Zustand des Spieles für alle objekte dieser Liga auf einmal ändern sollen. Das funktioniert so weit, nur dass die jeweiligen onchange Events der einzelnen Spiele dann nicht gefeuert werden, die dann wiederum weitere sachen machen, wie das melden an den Server usw.
Hast du dafür zufällig auch eine Lösung?
Grüße
Jeena Paradies
Hallo,
Hast du dafür zufällig auch eine Lösung?
Ich habe mir jetzt einen Workaround überlegt der zwar funktioniert, aber nicht wirklich schön ist:
<input type="radio" onfocus="[code lang=javascript]alert('bla'); this.checked=true;
" />[/code]
Wenn man dann auf den Radiobutton zugreift ruft man hinterher gleich auch noch myButton.focus(); auf. Das ist im Prinzip genau das was du vorgeschlagen hast, nur unabhängig von Funktionsnamen, da diese im inputfeld drinn stecken, bzw. ihm Dynamisch zugewiesen werden.
Grüße
Jeena Paradies
Hallo,
<input type="radio" onfocus="[code lang=javascript]alert('bla'); this.checked=true;
" />[/code]Wenn man dann auf den Radiobutton zugreift ruft man hinterher gleich auch noch myButton.focus(); auf.
Dieser Umweg ist unnötig. Wenn myButton eine Referenz auf den oben angegebenen Button ist, dann ist myButton.onfocus eine Referenz auf das Script, welches im onfocus-Attribut angegeben wurde. Das kann mit myButton.onfocus() aufgerufen werden.
Genau so kannst Du myButton.onchange(), myButton.onclick() ... aufrufen.
viele Grüße
Axel
Genau exakt das gleiche Problem habe ich jetzt auch. Warum ist das so geregelt das onchange nicht feuert, wenn ein script da etwas ändert????
Wenn du die Referenz [Element].value hast, dann kannst du auch [Element].onchange() aufrufen
Struppi.
Hallo,
Wenn du die Referenz [Element].value hast, dann kannst du auch [Element].onchange() aufrufen
Jo das wurde mir erst durch Axels Einwand bewusst und ich werde das so umbauen ;-) Jetzt kann ich auch ein bischen nachvollziehen, warum man darauf verzichtet hat onchange zu feuern, wenn ein Script da etwas ändert, da man wenn man auf den Button zugang hat, sowieso immer auch onchange() feuern kann, nur dass man jetzt die kontrolle hat ob man das möchte oder nicht.
Grüße
Jeena Paradies
Hallo,
Wenn du die Referenz [Element].value hast, dann kannst du auch [Element].onchange() aufrufen
Jo das wurde mir erst durch Axels Einwand bewusst und ich werde das so umbauen ;-)
Grrr. So ein scheiß, genau da hatte ja der Opera den Bug, dass er eich onchange nicht feuert, wenn man auf den Radiobutton klickt, siehe Beispielseite. Gibt es dafür vielleicht irgendeine Lösung, oder muss ich doch bei focus() bleiben? Die Seite wird nur von zwei Leuten bedient, die sie nie mit der Tastatur bedienen werden, von daher wäre es icht ganz so schlimm, wenn auch nicht wirklich schön.
Grüße
Jeena Paradies
Grrr. So ein scheiß, genau da hatte ja der Opera den Bug, dass er eich onchange nicht feuert, wenn man auf den Radiobutton klickt, siehe Beispielseite. Gibt es dafür vielleicht irgendeine Lösung, oder muss ich doch bei focus() bleiben? Die Seite wird nur von zwei Leuten bedient, die sie nie mit der Tastatur bedienen werden, von daher wäre es icht ganz so schlimm, wenn auch nicht wirklich schön.
Radio oder Checkboxen haben eigentlich keinen onchange Event, es wird ja nicht der Wert geändert sondern der Status von checked, du musst also onclick oder onfocus verwenden.
Struppi.
Hallo,
Radio oder Checkboxen haben eigentlich keinen onchange Event, es wird ja nicht der Wert geändert sondern der Status von checked, du musst also onclick oder onfocus verwenden.
Oh mann, bis ich mal was wirklich kappiere vergeht immer so viel Zeit ;-). Dann war ja onfocous genau das einzig sinnvolle. Ich hätte mir mal das ganze wirklich konkret mit der Tastatur ansurfen sollen, dann wäre alles klar gewesen, denn wenn man einem solchen Radiobutton focusiert, dann springt der gleich auf checked = true;
.
Vielen Dank euch beiden für die Geduld und die Erklärungen.
Grüße
Jeena Paradies
Hallo,
Oh mann, bis ich mal was wirklich kappiere vergeht immer so viel Zeit ;-). Dann war ja onfocous genau das einzig sinnvolle.
Nö, ich würde onclick favorisieren.
Ich hätte mir mal das ganze wirklich konkret mit der Tastatur ansurfen sollen, dann wäre alles klar gewesen, denn wenn man einem solchen Radiobutton focusiert, dann springt der gleich auf
checked = true;
.
Ja? Wirklich schon beim focusieren mit der Tab-Taste? Also ich muss dazu erst die Leertaste drücken oder bei einer Gruppe von Radiobuttons mit gleichem Namen, was ja die Standardanwendung sein sollte, mit den Pfeiltasten konkret einen Button anwählen.
Der Event onfocus feuert bei Focusierung der Radiobutton-Gruppe und jedes Buttons. Der Event onclick feuert wirklich nur, wenn der Button von checked auf nicht checked geht.
viele Grüße
Axel
Hallo,
Ja? Wirklich schon beim focusieren mit der Tab-Taste? Also ich muss dazu erst die Leertaste drücken oder bei einer Gruppe von Radiobuttons mit gleichem Namen, was ja die Standardanwendung sein sollte, mit den Pfeiltasten konkret einen Button anwählen.
Ach so ist das gedacht. Also bei mir ist das so, wenn ich mit Tab drangehe dann wird nichts auch checked=true umgestellt, da kann ich rumhüpfen wie ich will. Dann muss ich erst mal Leertaste drücken. Wenn ich aber eine der Pfeiltasten drücke dann wird der entsprechende Radiobutton dadurch sofort auf checked=true umgestellt.
Der Event onfocus feuert bei Focusierung der Radiobutton-Gruppe und jedes Buttons.
Ah, ok, das mit der Gruppe habe ich nicht gewusst.
Der Event onclick feuert wirklich nur, wenn der Button von checked auf nicht checked geht.
Nicht eher umgekehrt?
Es ist aber eher guter Wille der Browserhersteller, dass wenn man mit der Leertaste so einen Radiobutton selektiert dieser auch den onclick Event abfeuert, oder? Theoretisch würde es reichen wenn er nur auf Mausklicks reagiert, oder?
Also verstehe ich das mit dem fehlenden onchange auf einen Radiobutton immer noch nicht...
Grüße
Jeena Paradies
Hallo,
Ja? Wirklich schon beim focusieren mit der Tab-Taste? Also ich muss dazu erst die Leertaste drücken oder bei einer Gruppe von Radiobuttons mit gleichem Namen, was ja die Standardanwendung sein sollte, mit den Pfeiltasten konkret einen Button anwählen.
Ach so ist das gedacht. Also bei mir ist das so, wenn ich mit Tab drangehe dann wird nichts auch checked=true umgestellt, da kann ich rumhüpfen wie ich will. Dann muss ich erst mal Leertaste drücken. Wenn ich aber eine der Pfeiltasten drücke dann wird der entsprechende Radiobutton dadurch sofort auf checked=true umgestellt.
Genau so ist es und so wollte ich das auch beschreiben ;-).
Der Event onfocus feuert bei Focusierung der Radiobutton-Gruppe und jedes Buttons.
Ah, ok, das mit der Gruppe habe ich nicht gewusst.Der Event onclick feuert wirklich nur, wenn der Button von checked auf nicht checked geht.
Nicht eher umgekehrt?
Ja, _und_ umgekehrt, also immer, wenn geklickt werden müsste, allerdings auch, wenn sich dabei nichts an checked ändert. Das müsste dann ggf. noch abgefragt werden.
Es ist aber eher guter Wille der Browserhersteller, dass wenn man mit der Leertaste so einen Radiobutton selektiert dieser auch den onclick Event abfeuert, oder? Theoretisch würde es reichen wenn er nur auf Mausklicks reagiert, oder?
Nein, die Leertaste bzw. hier, bei Radiobuttons in einer Gruppe, auch die Pfeiltasten sind das Tastaturäquivalent zum Maus_klick_. Das Focusieren erfolgt mit der Tab-Taste.
Also verstehe ich das mit dem fehlenden onchange auf einen Radiobutton immer noch nicht...
Das wird man auch nicht verstehen können, weil es einfach von Browser zu Browser unterschiedlich umgesetzt wird. Mozilla feuert onchange auf Radiobuttons bei onclick, wenn sich checked dabei ändert[1], IE feuert onchange auf Radiobuttons erst nach blur und Opera feuert es gar nicht.
[1]Das ist auch am logischsten, weil sich beim Radiobutton ja bei jedem Klick was ändern kann.
viele Grüße
Axel
Hallo,
Nein, die Leertaste bzw. hier, bei Radiobuttons in einer Gruppe, auch die Pfeiltasten sind das Tastaturäquivalent zum Maus_klick_. Das Focusieren erfolgt mit der Tab-Taste.
Also ich habe jetzt noch einmal rumgetestet. Im Opera kann man innerhalb einer gruppe mit den Pfeiltasten rumlaufen ohne das onclick ausgelöst wird, dabei wird aber dennoch die checked/unchecked Anzeige geändert. Im Fx kann man mit Pfeiltasten in dieser Gruppe gar nichts machen, da geht nur Tab. Mit Gruppe Meine ich viele Radiobuttons mit dem gleichen value im name Attribut.
Das wird man auch nicht verstehen können
So wird das wohl sein...
Grüße
Jeena Paradies
Hallo,
Nein, die Leertaste bzw. hier, bei Radiobuttons in einer Gruppe, auch die Pfeiltasten sind das Tastaturäquivalent zum Maus_klick_. Das Focusieren erfolgt mit der Tab-Taste.
Also ich habe jetzt noch einmal rumgetestet. Im Opera kann man innerhalb einer gruppe mit den Pfeiltasten rumlaufen ohne das onclick ausgelöst wird, dabei wird aber dennoch die checked/unchecked Anzeige geändert.
Ja, leider. Also doch onfocus. Allerdings feuert das auch bei Tab-Tasten-Focus und das ändert nichts am checked. Also immer noch testen, ob der focusierte Button nun checked ist oder nicht!
Im Fx kann man mit Pfeiltasten in dieser Gruppe gar nichts machen, da geht nur Tab. Mit Gruppe Meine ich viele Radiobuttons mit dem gleichen value im name Attribut.
Das kann ich nicht bestätigen. In meinem FF und in meinem Opera kann man mit Tab nur dann einzelne Radiobuttons in der Gruppe focusieren, wenn noch kein Button checked ist. Ab dann geht Tab auf den checked Button und die anderen lassen sich nur noch mit den Pfeiltasten erreichen.
viele Grüße
Axel
Hallo,
Grrr. So ein scheiß, genau da hatte ja der Opera den Bug, dass er eich onchange nicht feuert, wenn man auf den Radiobutton klickt,
Bei Klick feuert ja auch onclick. Wo ist also das Problem?
viele Grüße
Axel
Hi,
ich denke mittlerweile doch, dass ich mein Problem immer noch nicht richtig beschrieben habe....
also die onChange-Funktionen sollen nicht automatisch aufgerufen werden. Nein sie sind genau so richtig, nur wenn jemand was an box1 oder box2 ändert soll sich bei box1 box2 bzw. bei box2 box3 ändern. Ein Script soll keine der onChange-Funktionen aufrufen.
Also noch mal genau das Problem:
Nachdem durch manuelle Änderung der box2 zum ersten mal das zweite OnChange aufgerufen wurde, löste eine manuelle Änderung an box1 nicht mehr das OnChange auf.
Bsp. Ich stelle ein box1(Kontinent): Europa
-> in box2(Land): erscheinen die europäischen Länder
nun suche ich aus den Ländern(box2) eines aus
-> box3 wird mit den Bundesländern gefüllt
Nachdem ich aber ein Land(box2) gewählt habe und zum ersten Mal die dazugehörige OnChange-Funktion aufgerufen wurde.
Kann ich zwar immer wieder ein neues Land einstellen und auch die Bundesländer ändern sich immer mit,
ABER und jetzt kommt das Problem:
ich kann box1(Kontinente) zwar noch ändern, aber die manuellen Änderungen führen nicht mehr zu einem Aufruf der OnChange-Funktion und somit wird auch der Inhalt von Box2 nicht mehr aktualisiert.
(Bevor die onChange-Funktion von box2 aufgerufen wurde, kann ich box1 immer wieder ändern und box2 wird aktualisiert.)
Mein JavaScript ändern nichts an den select-Boxen es werden nur options hinzugefügt oder gelöscht. Auch soll kein onChange-Event automatisch ausgelöst werden.
Vielen Dank noch mal
Hallo,
ich denke mittlerweile doch, dass ich mein Problem immer noch nicht richtig beschrieben habe....
Doch, beschrieben hast Du es mittlerweile öfters.
ich kann box1(Kontinente) zwar noch ändern, aber die manuellen Änderungen führen nicht mehr zu einem Aufruf der OnChange-Funktion
Dann hast Du diese Funktion irgendwie überschreiben.
Nochmal: Ohne einen relevanten Codeschnipsel, oder besser einen Link auf die Seite, wird Dir niemand helfen können.
viele Grüße
Axel
hi,
Nochmal: Ohne einen relevanten Codeschnipsel, oder besser einen Link auf die Seite, wird Dir niemand helfen können.
leider kann ich keinen Link zur Verfügung stellen, da die Seite auf einem Firmenintenen Server läuft.
So jetzt ein paar Codeschnipsel:
das ist das einzige was an der Funktion die bei onChange aufgerufen wird irgendwas löscht.
var anzahl_zuloeschen = document.getElementById('kontinent').length-1;
for(i=0; i<=anzahl_zuloeschen; i++)
{ var geloescht =
document.getElementById('kontinent').
removeChild(document.getElementById('kontinent').lastChild);
}
Das gleiche gibt es auch noch mal bei der onChange-Funktion für die Länder.
Wobei document.getElementById('kontinent') bzw. document.getElementById('land') ein Selectfeld zurückliefert.
Nachdem alle alten Einträge gelöscht wurde werden über appendChild neue Einträge hinzugefügt.
Es ist keine andere Funktion enthalten die irgendetwas am ursprünglichen Select-Feld ändert.
Mit freundlichen Grüßen
Liebe NicoleK,
wenn ich Deine Problembeschreibung aus dem OP lese, dann sehe ich immer noch Unterschiede in der Verständlichkeit zwischen Deinen letzten Erläuterungen und dem OP... Besser nächstes Mal den Text in der Vorschau anzeigen lassen, um ihn Korrektur zu lesen. Es dient sowohl Dir (der Hilfesuchenden), als auch den anderen Forumsteilnehmern (den Hilfe anbietenden), wenn aus der Frage oder Problembeschreibung zweifelsfrei hervorhgeht, wie Dein Problem gelagert ist. Insofern hatte wahsaga recht, wenn er auf die Tipps für Fragende verweist.
So jetzt ein paar Codeschnipsel:
var anzahl_zuloeschen = document.getElementById('kontinent').length-1;for(i=0; i<=anzahl_zuloeschen; i++)
{ var geloescht =
document.getElementById('kontinent').
removeChild(document.getElementById('kontinent').lastChild);
}
Das nennst Du "ein paar"? Aus diesen Schnipseln kann ich nicht das erkennen, was zur Lösung Deines Problems beitragen könnte. Sei halt so gut und poste eine aufschlussreiche Portion Code (HTML-Teil bitte auch!), oder löse Dein Problem alleine!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
also erstens hatte ich schon in der ersten Nachricht geschrieben was mein Problem ist und habe es auch noch mal von einem Bekannten lesen lassen und der hat verstanden worum es ging... aber naja
Auf jeden Fall kann ich keinen weiteren Code posten.
Ich greife mit meinem Js auf eine XML-Datei zu die ich vorher mit PL/SQL erstelle und das alles zu posten überschreitet meinen Willen, außerdem dürfte ich das auch nicht, da es firmenintern ist. Desweiteren denke ich nicht, dass das irgendwie helfen könnte. Auch der Rest des Js würde nichts helfen da dort auf das XML zugegriffen wird und dann sowieso niemand weiß was eigentlich gemacht wird.
Außerdem ist wie vorhin schon gesagt der gepostet Codeschnippsel das einzige in der gesamten Funktion, dass irgendetwas löscht... es muss also daran liegen oder?
Ich danke noch mal für die freundlichen Hilfeversuche, auch wenn ich immer noch nicht verstehen kann was an:
"Das Problem liegt aber nach der Auswahl von Box2 und dem Ausführen des damit verbunden onChange-Events wird, wenn ich Box1 ändere, das onChange-Event nicht mehr ausgelöst."
so unverständlich sein soll.
Bis bald
Ich danke noch mal für die freundlichen Hilfeversuche, auch wenn ich immer noch nicht verstehen kann was an:
"Das Problem liegt aber nach der Auswahl von Box2 und dem Ausführen des damit verbunden onChange-Events wird, wenn ich Box1 ändere, das onChange-Event nicht mehr ausgelöst."
so unverständlich sein soll.
Es ist ja auch nicht unverständlich, du hast ja auch bereits mehrmals Hinweise bekommen was du tun sollst, da diese bei dir nicht funktioniert liegt bei dir wohl etwas anderen im argen.
Wenn ich den Codeauschnitt sehe https://forum.selfhtml.org/?t=121774&m=783325 scheint das eine Menge zu sein. Du bist hier wild mit Funktionen Dokument weit am löschen ohne zu prüfen, was du überhaupt da tust. Sicher kann es sein, dass es funktioniert mit remvoeChild und getElement.. usw. Fomrularelemente zu bearbeiten doch wesntlich einfacher und sicherer ist die Forms Collection die alle Funktionen bietet um auch Options einzufügen und zu entfernen.
Grunsätzlich solltest du aber auch in JS Werte checken und dir im Zweifelsfall ausgeben lassen wenn diese nicht stimmen, blindes Vertrauen in Code ist hier fehl am Platz.
Struppi.
hi,
also erstens hatte ich schon in der ersten Nachricht geschrieben was mein Problem ist und habe es auch noch mal von einem Bekannten lesen lassen und der hat verstanden worum es ging... aber naja
Selbst wenn wir dein _Problem_ verstanden haben, kannst du nicht erwarten, dass wir ohne weiteres auch gleich die _Ursache_ nennen können.
Kannst du wenigstens das jetzt bitte endlich einsehen? Danke.
Ich danke noch mal für die freundlichen Hilfeversuche, auch wenn ich immer noch nicht verstehen kann was an: [...] so unverständlich sein soll.
Wie ich eingangs bereits schrieb:
Herr Doktor, ich haben Aua, wo ich krank?
Gut, das Problem verstehst du als (angenommener) Doktor jetzt sicher: Der Patient hat Schmerzen.
Also, woran liegt es?
Wie, das kannst du nicht sagen? Was bist du denn bloss für ein Doktor ...?
(Erstaunlich, wie tief man die Meßlatte für Analogien offenbar manchmal legen muss, um den Leuten einen einfachen Sachverhalt nahezubringen ...)
Ich hatte dir extra die Tipps für Fragende verlinkt, damit du dort nachlesen kannst, dass hier etwas mehr von einer verständlichen und _nachvollziehbaren_ Problembeschreibung erwartet wird.
Auf jeden Fall kann ich keinen weiteren Code posten.
Dann wirst du wohl dein "firmeninternes" Problem auch firmenintern lösen lassen müssen.
gruß,
wahsaga
Hallo,
So jetzt ein paar Codeschnipsel:
das ist das einzige was an der Funktion die bei onChange aufgerufen wird irgendwas löscht.var anzahl_zuloeschen = document.getElementById('kontinent').length-1;
Das Element mit der ID "kontinent" ist ein SELECT-Element?
Wenn ja, dann ist hiernach anzahl_zuloeschen gleich der Länge der options-Collection dieses SELECT-Elements minus 1.
Nehmen wir an, das SELECT hätte 5 OPTIONS, dann ist anzahl_zuloeschen = 4.
for(i=0; i<=anzahl_zuloeschen; i++)
{ var geloescht =
document.getElementById('kontinent').
removeChild(document.getElementById('kontinent').lastChild);
}
Hiermit wird nun 5 Mal (für i von 0 bis 4) das lastChild des SELECT-Elements gelöscht. Je nach Browser sind das _nicht_ jedesmal OPTION-Elemente. Im IE und FF ist die SELECTION hiernach _nicht_ leer, wenn der HTML-Code so aussieht:
<select name="kontinent" size="4" id="kontinent">
<option value="EU">Europa</option>
<option value="AF">Afrika</option>
<option value="AS">Asien</option>
<option value="AU">Australien</option>
<option value="AM">Amerika</option>
</select>
Einige .lastChilds sind hier nämlich white-spaces (Zeilenumbrüche).
Nutze besser statt .lastChild die options-Collection direkt, wie in http://de.selfhtml.org/javascript/objekte/options.htm#elemente_loeschen beschrieben.
Zu Deiner eigentlichen Frage: siehe Felix. Ich will Dir nur zeigen, dass Du mit diesem Code noch mehr Probleme bekommen wirst.
viele Grüße
Axel
hi,
Also ich gebe zu, dass ich das Problem des Posters verstanden habe!
Glaubst du?
An Hand von Nicoles (übrigens vermutlich wohl eine "sie") Antwort auf dein Posting bezweifle ich das noch ...
gruß,
wahsaga