Variable in function...

slsb02

Grünschnabel
... ich habe noch ein kleines anderes Problem. Ich würde gerne hier:

Code:
<select name="ort1" onChange="javascript:addOption(this.form.ort1.options[this.form.ort1.options.selectedIndex].value,'formname','auswahlfeld)">

an die function werte übergeben, klappt auch in soweit, dass ich mit alert ausgeben kann nur leider wird der Wert einfach nicht verarbeitet. Ich hoffe, mir kann jemand helfen, ich Programmiere sonst nur PHP, Javascript muss hier leider her, würde es gerne umgehen :)

du function sieht so aus:

Code:
 function addOption(wert,auswahlfelder,formname) 
  {

	   alert(formname);
 
     if(document.formname.auswahlfelder.length > 0)
     {
       // wenn wir einträge haben, erst mal weg damit
       document.formname.auswahlfelder.length = null;
     }

     for(i=0;i < toadd[wert].length;i++)
     {
       // solange das gewählte array einträge hat, 
       // übertragen wir diese in die selectbox
       ins = new Option(toadd[wert][i],toadd[wert][i]);
       document.formname.auswahlfelder.options[document.formname.auswahlfelder.length] = ins;
     }

  }

Bitte nehmt mir Tomaten von den Augen ;-)
Vielen Dank
 
Zuletzt bearbeitet:
Hi,

ich kenne ja die Bezeichnungen von Deinem Formular bzw. Deiner Auswahlfelder, aber mir scheint, als würdest Du
im Funktionsaufruf Formular- und Auswahlfeldernamen vertauschen. Ausserdem fehlt im Aufruf ein schliessendes
einfaches Anführungszeichen.
Code:
<select name="ort1" onChange="addOption(this.form.ort1.options[this.form.ort1.options.selectedIndex].value, 'auswahlfeld', 'formname')">
Sollte es daran nicht liegen, wäre es nicht schlecht, wenn Du das gesamte Formular posten würdest.

Ciao
Quaese
 
Hallo und vielen Dank, für die Hilfe ich Poste noch einmal alles, was dazugehört:

1.
Code:
  var toadd = new Array();

  toadd["1"] = new Array();
  toadd["1"][0] = "1.1";
  toadd["1"][1] = "1.2";
  toadd["1"][2] = "1.3";

  toadd["2"] = new Array();
  toadd["2"][0] = "2.1";
  toadd["2"][1] = "2.2";


 function addOption(wert,auswahlfelder,formnamen) 
  {

     if(document.formname.auswahlfelder.length > 0)
     {
       // wenn wir einträge haben, erst mal weg damit
       document.formname.auswahlfelder.length = null;
     }

     for(i=0;i < toadd[wert].length;i++)
     {
       // solange das gewählte array einträge hat, 
       // übertragen wir diese in die selectbox
       ins = new Option(toadd[wert][i],toadd[wert][i]);
       document.formname.auswahlfelder.options[document.formname.auswahlfelder.length] = ins;
     }

  }

2.
Code:
<form name="form1" method="post">
<select name="ort1" onChange="javascript:addOption(this.form.ort1.options[this.form.ort1.options.selectedIndex].value,'','form1')">
  <option value="">--- bitte auswählen ---</option>
  <option value="1">Berlin</option>
  <option value="2">Hamburg</option>
</select>
<select name="halle">
  <option value="">--- Halle auswählen ---</option>
  </select>
</form>

Vielen Dank!
 
Hi,

da Du die Namen des Formulars und des Auswahlfeldes als String übergibst, ist das Ansprechen über
die Punktschreibweise nicht möglich. Stattdessen erfolgt der Zugriff auf die Elemente über forms bzw.
elements.
Code:
function addOption(wert, auswahlfelder, formnamen){
  document.forms[formnamen].elements[auswahlfelder].length = 0;
  for(i=0;i < toadd[wert].length;i++){
    // solange das gewählte array einträge hat,
    // übertragen wir diese in die selectbox
    ins = new Option(toadd[wert][i],toadd[wert][i]);
    document.forms[formnamen].elements[auswahlfelder].options[document.forms[formnamen].elements[auswahlfelder].length] = ins;
  }
}
Der Aufruf sieht folgendermassen aus:
Code:
<select name="ort1" onChange="addOption(this.form.ort1.options[this.form.ort1.options.selectedIndex].value, 'halle', 'form1')">
Vielleicht hilft Dir das weiter.

Ciao
Quaese
 
Hallo Quaese,

das ist genau das, was ich gesucht habe, vielen vielen Dank, für dein Hilfe, jetzt funktioniert es so, wie es soll! Wenn ich noch etwas habe, melde ich mich noch einmal.
Weil eine Kleinigkeit muss noch, mal sehen, ob ich das hinbekommen.

Danke und liebe Grüße
slsb02
 
So, nun hat sich doch noch ein Problem eingeschlichen so wie ich es geahnt habe:

Ich muss die ganzen Variablen in ein php array legen. Nur leider komme ich mit der Javascript Function dann nicht mehr an der Wert. Ich bitte noch einmal mir einen Anstoß zu geben, meine Tomaten, habt ihr ja schon :-)

Folgendes:
Code:
<select name="ort<?php echo '[' . $i . ']'; ?>" onChange="javascript:addOption(this.form.ort<?php echo '[' . $i . ']'; ?>.options[this.form.ort<?php echo '[' . $i . ']'; ?>.options.selectedIndex].value, 'halle<?php echo $i; ?>', 'new_tour'); addOptions(this.form.halle<?php echo $i; ?>.options[this.form.halle<?php echo $i; ?>.options.selectedIndex].value, 'url<?php echo $i; ?>', 'new_tour')">

Folgende Fehlermeldung bekomme ich: "this.form.ort.1" ist NULL oder kein OBJECT

Vielen Dank und liebe Grüße
slsb02
 
Zuletzt bearbeitet:
Hi,

schon mal versuch, ort[$i] mit Hilfe von elements anzusprechen?
Code:
<select name="ort<?php echo '[' . $i . ']'; ?>" onChange="addOption(this.form.elements['ort<?php echo '[' . $i . ']'; ?>'].options[this.form.['ort<?php echo '[' . $i . ']'; ?>'].options.selectedIndex].value, 'halle<?php echo $i; ?>', 'new_tour'); addOptions(this.form.halle<?php echo $i; ?>.options[this.form.halle<?php echo $i; ?>.options.selectedIndex].value, 'url<?php echo $i; ?>', 'new_tour')">
Ansonsten wäre es gut, den Quellcode komplett einsehen zu können - ohne PHP.

Ciao
Quaese
 
Hallo Quaese,

vielen Dank noch einmal!

Ich musste meinen Beitrag eben noch einmal Ändern, weil meine Tomaten wohl doch nicht weg waren. Habe einfach nur ' vergessen und schon klappt es. Vielen Vielen DANK

Gruß
slsb02
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück