alle browser spinnen ...
robbie
- javascript
hallo,
hab jetz stundenlang über meinen scripten gesessen, um den fehler zu finden, den mir ie6, ns7 und opera anzeigen. die problematik is schwer zu erklären ... am besten ihr guckt selbst. das dokument ist eine mischung aus php / mysql, javascript und html.
der fehler, den die browser anzeigen, is kompletter mist. er will eine variable aufrufen, die nicht existiert und nennt mir als fehler ganz klar, das diese variable nicht existiert. das ding ist aber, das der aufruf, ein href-link, eine ganz andere variable aufrufen will, das script aber zwischendrin totalen müll produziert und die variable ändert.
um die variable zu erzeugen, nutzen wir den javascript-befehl 'eval' - vielleicht hat ja da jemand erfahrungen mit gemacht, oder ähnliche fehler entdeckt und beheben können.
danke.
achso, der fehler tritt auf folgender seite auf:
--> http://www.waschhaus.de/waschhaus.php3?id=program
und zwar beim aufklappen EINIGER (und auch wirklich nur einiger) layer ... (auf die va-titel klicken)
Hallo robbie,
das script aber zwischendrin totalen müll produziert und die variable ändert.
meist war's doch der Programierer ;)
um die variable zu erzeugen, nutzen wir den javascript-befehl 'eval'
habe keine Lust, Dein Script zu untersuchen, aber hast Du Dir denn das Ergebnis Deiner eval-Operation schonmal anzeigen lassen?
Gruß, Andreas
ach andreas,
gleich so beleidigend werden is ja auch nich nett ... zumal zwei leute seit ner weile den quelltext studieren und einfach nichts mehr verstehen ...
... hast Du Dir denn das Ergebnis Deiner eval-Operation schonmal anzeigen lassen?
okay, also ein Beispiel:
(1) PHP erzeugt eine Javascript-Variable mit dem Namen 'TmpAuf03100221004204' und JS weist ihr Inhalt zu.
(2) Im im Browser angezeigten Dokument (und auch im generierten Quelltext) steht diese Variable mit der richtigen Bezeichnung und dem richtigen Inhalt und der richtigen Var-Definition.
(3) Um diese Variable aufzurufen bzw. den Inhalt im Browser anzuzeigen, gibt es eine verknüpfung, deren angabe javascript:showLayer(03100221004204,'Auf') auch die richtigen werte hat.
(4) a) beim Aufruf von (3) zeigt er den inhalt an, ALLES TOLL. oder:
(4) b) Der Browser zeigt nichts an und gibt stattdessen eine Fehlermeldung zurück, die Variable TmpAuf0214786377860 ist undefiniert. Klar, die Variable gibts ja auch nicht, aber ich hab sie auch nirgends aufgerufen.
und das ist das kurioseste: obwohl die ausgabe durch eine php-schleife mit immer dem selben template mit daten aus einer mysql-datenbank erzeugt wird, tritt der fehler nicht bei allen erzeugten variablen, sondern nur bei einigen auf.
aber wahrscheinlich hast du recht, lieber andreas,
wahrscheinlich spinn ich ;-)
hi,
gleich so beleidigend werden is ja auch nich nett ...
nimm's mal mit ein bisschen mehr humor - was du dir da an quelltext zusammengetextet hast, ist echt übel ...
zumal zwei leute seit ner weile den quelltext studieren und einfach nichts mehr verstehen ...
kein wunder, das ist das reinste chaos.
sie dir bitte mal meine antwort auf deine frage an, mit der dort im beispiel benutzten methode geht das sehr viel einfacher.
gruss,
wahsaga
Hallo wahsaga,
gleich so beleidigend werden is ja auch nich nett ...
nimm's mal mit ein bisschen mehr humor
schließe mich voll an ;)
Gruß, Andreas
Hi,
(3) Um diese Variable aufzurufen bzw. den Inhalt im Browser anzuzeigen, gibt es eine verknüpfung, deren angabe javascript:showLayer(03100221004204,'Auf') auch die richtigen werte hat.
Du weißt, das eine führende 0 bei einer Zahl dazu führt, daß diese als Oktalzahl interpretiert wird?
Daher kommt in showLayer 214786377860 an...
cu,
Andreas
hi,
hab jetz stundenlang über meinen scripten gesessen, um den fehler zu finden, den mir ie6, ns7 und opera anzeigen.
das wundert mich nicht, bei dem CHAOS, dass du da verbrochen hast.
warum hast du so viele html-inhalte in javascript-variablen untergebracht?
um inhalte dynamisch ein- und ausblenden zu können, ist eval() in kombination mit innerHTML die denkbar ungeeignetste methode.
warum schreibst du nicht alle inhalte direkt als html ins dokument, und blendest sie ggf. zunächst per css aus (display:none oder visibility:hidden).
dann, wenn ein bereich eingeblendet werden soll, übergist du der funktion lediglich die ID dieses elementes, und schreibst nicht andauernd inhalte mit innerHTML neu ins dokument und löschst sie anschliessend wieder.
sieh dir mal hier http://www.mezzoblue.com/zengarden/submit/ an, wie einfach und effizient man so etwas lösen kann (zweiter absatz, "click for a statement on minimal design").
gruss,
wahsaga
ach wahsaga,
hatte es auf diese weise probiert, ich weiß grad nich mehr, was daran nich funktioniert hat - irgendwie gabs da probleme mit der erzeugung aus der datenbank oder mit unterschiedlichen browsern ... hatte eine auf dem ie laufende version in diesem system erstellt, die aber halt nich auf ns und auch nich opera lief.
ich weiss doch selbst, wie aufwendig das ganze programmiert is - aber nur so hats auf allen browsern funktioniert. naja, fast halt.
Danke trotzdem, werd mir mal deinen quelltext anschauen.
Robbie
Nur am Rande: Wenn du mit InnerHTML und so anfängst, bindest du dich und deine Seite _strikt_ an den IE !! Kein anderer Browser interpretiert InnerHTML, soweit ich weiß.
Gruß
Mastershrimp
Hallo,
Nur am Rande: Wenn du mit InnerHTML und so anfängst, bindest du dich und deine Seite _strikt_ an den IE !! Kein anderer Browser interpretiert InnerHTML, soweit ich weiß.
Quark. Siehe Archiv. Z.B. </archiv/2003/6/50871/#m278992>.
Mathias