getElementById is null ?!?

hallo,

hab mit AJAX, was gebastelt, was aber nicht tut,
also, ich habs 3 mal, etwa gleich, 2 mal tut’ das 3. mal nicht…

JS... var name = document.getElementById('name').value; var pass = document.getElementById('pass').value; ... HTML <form...> ... <input type="text" id="name"> ... <input type="text" id="pass">
i-wie hab ich da keine ahnung, wieso es net tut… :unamused:

hoffe ihr hattet sowas schon mal und könnt mir helfen
mfg Joey

Was hat denn dein (rudimentaerer) Beispielcode mit AJAX zu tun?

Wenn du Formularelemente erst dynamisch zur Laufzeit erzeugst, macht der IE dabei unter verschiedenen Bedingungen Probleme, insb. was die “Erkennbarkeit” am name-Attribut angeht. Hast du das ganze mal in anderen Browsern getestet, machen die auch Probleme? (Und wenn ja, was sagen deren Fehlerkonsolen; was sagt der/ein DOM Inspector zur Dokumentstruktur, sieht die wie gewuenscht aus?)

P.S.: Dass du versuchst, auf die Elemente zuzugreifen, bevor sie ueberhaupt existieren, waere zwar auch ein beliebter Anfaenger-Fehler - aber den koennen wir wohl hoffentlich ausschliessen, wenn du schon mit AJAX herumexperimentierst.

ähh… ja, der zugriff ist in ne funktion eingebaut, die nur dadurch aufgerufen werden kann, wenn man auf den button unter den inputs klickt

ja, das hat jetzt nicht viel mit ajax zu tun, aber da sehe ich eben die ganze funktion als ajax an…

die elemente sind von anfang an da, nur versteckt, was aber auf javascript keinen einfluss haben dürfte…

die FF fehler konsole sagt eben das, was ich oben geschrieben hab, aber im ie hab ich erst recht nicht ausprobiert, 1. weil ich glaub eh noch ie6 (oder gar 5) habe, und im ff alles ‘schneller’ läuft…

mfg Joey

Nun ja: ich habe mal auf die Schnelle das hier gebastelt (ist natürlich nicht valide, sondern nur ein Test):[code]

TestForm [/code] Das funktioniert definitiv. Ursprünglich dachte ich, dass es einen Unterschied zwischen einfachen (') und doppelten (") Anführungszeichen geben könnte - dem ist nicht so. Der Fehler muss bei Dir woanders liegen - in den meisten Fällen wird versucht, auf ein Element zuzugreifen, das noch nicht existiert. Wäre in dem obigen Beispiel die Ausgabe _nicht_ in eine Funktion gekapselt, würde es zu diesem Fehler kommen.

nunja, dann werd ich mal suchen…
(versuchen)

mfg Joey

Edit:
der aufbau ist bei mir eben i-wie so:[code]…

hier die funktionen dann kommt eben noch ein bisschen stylesheet, den ich sowieso mal rausnehemn werde... dann hier die elemente erst beim klick auf diesen button wird die funktion aufgerufen... ...[/code]

Pack dein Script mal in den Head-Tag, ich weiß nicht, ob das was ändert, würde ich aber auf jeden Fall machen.

Oder, noch besser: lade mal hoch und poste den Link, damit wir mal einen Blick drüber werfen können… so per “Ferndiagnose” wird’s schwierig :smiley:

das wollt’ ich eigentlich dann machen, wenns dann funktioniert…
habs nun schon gemacht, aber tut immer noch net :cry:

werd dann mal noch dran rumscripten, aber wenn einer von euch noch mehr weiss; her damit :p

mgf Joey

Ja.

Sehr schön.

Und der Link…? :smiley:

Ja, wo isser denn? :ps:

aja, sorry, dein post hatt ich voll übersehen…
das ist ein Link (hoff ich)
ja, das design ist noch nix, aber auch nur weil die grafiken fehlen :smiley:
und die links sin auch nix, da ich die betr dateien noch nicht hochgeladen hab

mfg Joey

edit/ sorry: ihr müsst auf Mitgliederbereich klicken
edit2/ und i-was eingeben und auf Login klicken dann bleibt er bei “verarbeite daten” hängen

D’oh! Wenn du den Inhalt des Divs #login, der das Formular enthaelt, beim Klicken auf den Login-Button erst mal per .innerHTML="…" austauschst, so dass das Formular anschliessend futsch ist - dann brauchst du dich eigentlich nicht allzu stark wundern, dass anschliessend der Zugriff auf die Formularelemente auch nicht mehr funktioniert - oder …?

Mir sind da (nur auf die Schnelle) auch noch ein paar Dinge aufgefallen:

Hier muss ein Leerzeichen mehr rein (zwischen onclick und value). Außerdem gibt es kein “onClick” sondern nur “onclick” - das bringt den einen oder anderen Browser schon mal aus dem Tritt.
2. [quote]document.getElementById(“unam”) has no properties
vpu.bplaced.net/test/
Line 39[/quote]
Das spuckt mir firebug aus - ein sehr, sehr nützliches Firefox-AddOn für Webdesigner. Mit diesem tool kannst Du Dir Bestandteile der Seite genauer ansehen - dann fällt auch auf, dass das Formular nach dem Klick nicht mehr da ist…

Im Übrigen würde ich ein Login niemals mit JavaScript / Ajax lösen… das ist eine klassische PHP-Aufgabe (schon aus Sicherheitsgründen).

Ich verstehe, was Du da vorhast - nur würde ich dieses Problem anders lösen.
Die “dynamische” Anzeige per CSS (“visibility:hidden | visible”) ist ok, das verarbeiten der Daten sollte “ganz normal” mit der Absenden-Funktion des Formulares gelöst werden.
Die Anzeige “Daten werden verarbeitet” muss in ein zusätzliches DIV (Grund: siehe voriger Post) und/oder wird von der PHP-Funktion erzeugt bzw. angezeigt.

hi zusammen,

danke euch für die eigentlich logische und einfache Lösung :p

hmm…
da werden ja eig. auch nur die daten gesendet, um dann von php verarbeitet zu werden…
ich versteh da nicht, was falsch daran ist?

ist ja eigentlich alles logisch :smiley:

danke euch (auch für den tipp ‚firebug‘^^)

[size=85]wär dann wohl gelöst…[/size]

mfg Joey