Moin!
Weil ich eine faule Sau bin, habe ich mir eine Funktion geschrieben, die nacheinander alle INPUTS eines Formulars anspricht (Listen sind in dem Form nicht vorhanden).
"Ansprechen" ist eine sehr allgemeine Umschreibung für "macht irgendwas, aber was genau, das hab ich mir noch nicht genau überlegt".
Das wird jedenfalls an deinem Code deutlich.
> function CheckAllInputs()
> {
> var pInput;
// Hier fehlt dringend die Definition der Schleifenvariablen:
var i;
> for(i=0; pInput=document.getElementsByTagName("input")[i]; i++)
// Trickreich, aber unperformant! getElementsByTagName ist eine sehr zeitaufwendige Funktion, die man, wo immer möglich, nur einmal aufrufen sollte. Also das zurückgegebene Array lieber zwischenspeichern und dann durchgehen.
> {
> if(null != pInput.onchange && "" != pInput.name)
> {
> if(false == pInput.onchange()) return false;
// Hier rufst du die Methode "onchange" des Inputfeldes auf. Warum dieses? Hast du dem Formularfeld denn eine Methode definiert? Was versuchst du damit zu erreichen/testen? Wo ist der Code dieser Methode? Verwechselst du da evtl. was mit dem Eventhandler gleichen Namens?
> }
> }
> return true;
> }
Wie Ihr erkennen könnt, erfolgt der Aufruf der Testroutinen mit pInput.onchange(). Das funktioniert auch mit allen von mir getesteten Browsern (Opera, IE, Mozilla) soweit ganz gut. Nur, den Rückgabewert der Testfunktion (onchange()) kriege ich nicht zurück. Wenn ich den Funktionsausfruf in ein alert
alert(pInput.onchange());
einbaue, dann erhalte ich 'undefined'.
Aus dem INPUT direkt heraus funktionierts.
Wie ist das zu interpretieren? Insbesondere was ist "aus dem INPUT direkt"?
- Sven Rautenberg
My sssignature, my preciousssss!