keine Parameterübergabe

Sooo jetzt will ich mich auch mal wieder hier auslassen =) Oftmals denke ich mir "Finger weg von JavaScript" und heute ist wieder so ein Tag an dem ich das permanent denke. Eigentlich ist der Grundgedanke einfach.

Ich möchte einer Funktion Parameter übergeben und damit arbeiten. In diesem Fall der Name der aktivierten Checkbox und des dazugehörigen Input Feldes. Nehmen wir an die Checkbox hat den klangvollen Namen "checkbox" und das Input Feld einfach "feld". Diese beiden Variablen werden einer Funktion übergeben

Der Funktionsaufruf in der Checkbox ist folgender :
onChange="Funktionsname('checkbox_ger','gereinigt')"

Die Funktion sieht so aus :

function Funktionsname(checkbox_name,input_name) {
if(!window.document.formular.checkbox_name.checked){
window.document.formular.input_name.value="";
}

Eigentlich soll der Wert des Inputfeldes entfernt werden wenn die Checkbox deaktiviert wurde. Allerdings bekomme ich von Mozilla die Fehlermeldung :
Error: window.document.formular.checkbox_name has no properties

Das verwundert mich denn wenn ich den Parameter 'checkbox_name' über alert ausgeben lasse dann bekomme ich den namen der Checkbox auch ausgegeben der im Funktionsaufruf deklariert wurde (checkbox_ger). Kann mir mal jemand sagen warum ich den Fehler nicht finde ?!
 
Gleich so viele schöne exemplarische Fehler *händereib* :-):
Die schließende Klammer der Funktion fehlt. Außerdem kannst du doch den Namen einer Varaibale nicht einfach so wie ihren Inhalt verwenden. Du wirst beides durcheinander. So sucht das Script nach einer checkbox mit dem Namen "checkbox_name" ect. Du wilslt den Inhalt der Variablen nicht den Namen!
HTML:
function Funktionsname(checkbox_name,input_name) {
    	if(!eval('window.document.formular.' + checkbox_name + ' .checked'){
    		eval('window.document.formular.' + input_name + '.value=""');
 }
alternativ führt auch das (sogar eleganter und besser) zum Ziel:
HTML:
function Funktionsname(checkbox_name,input_name) {
     	if(!document.getElementsByName(checkbox_name)[0].checked){
     		document.getElementsByName(input_name)[0].value='';
 }
Eine Bitte noch: Erhöhe die lesbargkeit deiner Beiträge indem du auch so schöne Source-Code-Kästen verwendest wie ich eine Zeile weiter oben. Danke!

Beitrag bitte als "erledigt" markieren.
 
Zuletzt bearbeitet:
Das mit der Klammer war nur ein Schreibfehler - habe das Script nicht zu ende kopiert sondern nur den Schlüsselteil - im Anschluss folgen noch ein paar Bearbeitungsschritte und dann auch die schliessende Klammer

Aber danke füe die Hilfe - letztere Variante funktioniert prima und ich werd's mir merken ;)
 

Neue Beiträge

Zurück