Dennis Kurs: Übergabe unter den Funktionen

Guten Tag

Ich hab folgendes Problem: Ich habe in einem HTML Dokument 2 Javascript Funktionen. Die erste Funktion wird aus einem Formular mit einem Wert Aufgerufen der je nach Wert eine Textarea verändert. In der zweiten Funktion, die mit einem anderen Wert aufgerufen wird, berechne ich einen Preis und gebe diesen im HTML Dokument aus. Mein Problem ist nun, dass ich in der 2. Funktion wissen muss welche Checkboxen bzw. Radio Buttons aktiviert sind und welche nicht. Das Problem ist, dass ich auch nicht die 2. Funktion einfach mit zwei Werten öffnen kann, da sie von 2 unterschiedlichen Formularelementen aufgerufen werden müsste.
Ich weiß das sicherlich nicht alles verständlich ist aber wenns Fragen gibt fragt bitte nochmal nach.
Ich danke allen schonmal im vorraus die Antworten oder sich darüber Gedanken machen.

  1. Hi,

    Das Problem ist, dass ich auch nicht die 2. Funktion einfach mit zwei Werten öffnen kann, da sie von 2 unterschiedlichen Formularelementen aufgerufen werden müsste.

    die übergebenen Werte sind nicht abhängig davon, durch was oder von wo aus die Funktion aufgerufen wurde.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Entweder ich versteh dich nicht oder wir reden an einander vorbei. Hier ein auszug aus dem Quelltext:
      function opt_beschreibung (i)
      {
        switch (i)
        {
       case 1 : document.konfigurator.beschreibungen.value = "..." break;
       case 2 : document.konfigurator.beschreibungen.value = "..." break;
       case 3 : document.konfigurator.beschreibungen.value = "..." break;
       case 4 : document.konfigurator.beschreibungen.value = "..." break;
       case 5 : document.konfigurator.beschreibungen.value = "..." break;
       case 6 : document.konfigurator.beschreibungen.value = "..." break;
       case 7 : document.konfigurator.beschreibungen.value = "..." break;
       case 8 : document.konfigurator.beschreibungen.value = "..." break;
       case 9 : document.konfigurator.beschreibungen.value = "..." break;
       case 10 : document.konfigurator.beschreibungen.value = "..." break;
       case 11 : document.konfigurator.beschreibungen.value = "..." break;
       case 12 : document.konfigurator.beschreibungen.value = "..." break;
       case 13 : document.konfigurator.beschreibungen.value = "..." break;
       case 14 : document.konfigurator.beschreibungen.value = "..." break;
       case 15 : document.konfigurator.beschreibungen.value = "..." break;
       case 16 : document.konfigurator.beschreibungen.value = "..." break;
       case 17 : document.konfigurator.beschreibungen.value = "..." break;
       case 18 : document.konfigurator.beschreibungen.value = "..." break;
      }

      function preis (m)
      {
        switch (m)
        {
          case 12 : document.getElementById("endpreis").innerHTML=...; break;
       case 24 : document.getElementById("endpreis").innerHTML=...; break;
       case 36 : document.getElementById("endpreis").innerHTML=...; break;
       case 48 : document.getElementById("endpreis").innerHTML=...; break;
       case 60 : document.getElementById("endpreis").innerHTML=...; break;
       case 72 : document.getElementById("endpreis").innerHTML=...; break;
        }
      }

      Die erste Funktion wird so aufgerufen:
      <input type="checkbox" name="int_option" value="Fax System" onclick="opt_beschreibung(1);">...
      Sie ändert:
      <textarea name="beschreibungen" cols="30" rows="5" style="margin-top:20px" readonly>
      Die zweite Funktion wird wie folgt aufgerufen:
      <option onclick="preis(12);">...
      Sie ändert:
      <div id ="endpreis">Preis</div>

      So und ich möchte jetzt alle aktivierten Checkboxen erkennen ihnen Werte zuweisen mit den Werten rechnen und diese dann im div "endpreis" ausgeben.
      Vielleicht ist dies ja verständlicher bzw. du erklärst mir bitte noch einmal was du meinst.
      Danke

      1. Lieber Dennis,

        case 1 : document.konfigurator.beschreibungen.value = "..." break;
        case 2 : document.konfigurator.beschreibungen.value = "..." break;
        case 3 : document.konfigurator.beschreibungen.value = "..." break;
        case 4 : document.konfigurator.beschreibungen.value = "..." break;
        case 5 : document.konfigurator.beschreibungen.value = "..." break;
        case 6 : document.konfigurator.beschreibungen.value = "..." break;
        case 7 : document.konfigurator.beschreibungen.value = "..." break;
        case 8 : document.konfigurator.beschreibungen.value = "..." break;
        case 9 : document.konfigurator.beschreibungen.value = "..." break;
        case 10 : document.konfigurator.beschreibungen.value = "..." break;
        case 11 : document.konfigurator.beschreibungen.value = "..." break;
        case 12 : document.konfigurator.beschreibungen.value = "..." break;
        case 13 : document.konfigurator.beschreibungen.value = "..." break;
        case 14 : document.konfigurator.beschreibungen.value = "..." break;
        case 15 : document.konfigurator.beschreibungen.value = "..." break;
        case 16 : document.konfigurator.beschreibungen.value = "..." break;
        case 17 : document.konfigurator.beschreibungen.value = "..." break;
        case 18 : document.konfigurator.beschreibungen.value = "..." break;

        AUA! Es gibt da eine bessere Lösung. Probiere es mal mit einem Objekt, welches Arrays abspeichert!

        // globale Objekt-Variable "Daten"  
        Daten = {  
            // "Daten" ist bei dieser Schreibweise ein Objekt. Jetzt bekommt es Eigenschaften  
          
            beschreibungen : [ // hier öffnet sich bei dieser Schreibweise ein Array  
                "...", // Wert für Daten.beschreibungen[0], Komma nicht vergessen!  
                "....",  
                ...  
                "letzte Beschreibung" // letztes Array-Element, daher hier kein Komma!!!  
            ], // hier ein Komma, da es noch nicht das letzte Unterobjekt unseres Objektes ist!  
          
            endpreis : [  
                "€ 10,-", // Wert für Daten.endpreis[0]  
                "€ 123,99",  
                "$ 14,50",  
                ...  
                "-- gratis --" // kein Komma!  
            ] // hier KEIN KOMMA, da es das letzte Unterobjekt ist!  
        } // Daten-Objekt zu Ende  
          
        // Anstatt switch(i) kann man nun folgendes notieren:  
        document.konfigurator.beschreibungen.value = Daten.beschreibungen[i];  
          
        // Anstatt switch(m):  
        document.getElementById("endpreis").innerHTML= Daten.endpreis(m);  
        
        

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Vielen Dank für diesen Tip!
          Macht das ganze schon um einiges überschaubarer. Aber es hilft mir nicht wirklich bei meinem eigentlichen Problem. Die Daten endpreis sollen berechnet werden anhand der gewählten optionen (also welche Checkboxen oder Radio Buttons aktiviert sind oder nicht). Das heißt endpreis ergibt sich einmal aus dem gewähltem [m] und aus den ausgewählten optionen [i] wobei denen noch Werte zugewiesen werden müssen und diese auch die möglichkeit bieten müssen noch multipliziert zu werden. Diese endwerte sollen später im endpreis stehen. Aber wie geht das? Ich bin Javascript neuling und kom mit dem ganzen nicht so zurecht.

          Schönen Dank

          Dennis Kurs

          1. hi,

            Das heißt endpreis ergibt sich einmal aus dem gewähltem [m] und aus den ausgewählten optionen [i] wobei denen noch Werte zugewiesen werden müssen und diese auch die möglichkeit bieten müssen noch multipliziert zu werden. Diese endwerte sollen später im endpreis stehen. Aber wie geht das? Ich bin Javascript neuling und kom mit dem ganzen nicht so zurecht.

            Dann fang mit elements und options an - da findest du eigentlich schon alles, was du zum Auslesen von Werten aus/Ermitteln von Auswahlen in Formularfeldern brauchst.
            Dau noch ggf. parseFloat/parseInt, um Formularfeldinhalte, die immer vom Typ String sind, in Zahlen umzuwandeln, um damit rechnen zu können.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
        2. document.getElementById("endpreis").innerHTML= Daten.endpreis(m);

          Hier sind die runden Klammern am Ende durch eckige zu ersetzen:

          document.getElementById("endpreis").innerHTML= Daten.endpreis[m];

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.

  2. Lieber Dennis,

    Deine erste Funktion nimmt ein Element, liest seinen Wert aus und schreibt ihn in ein anderes Element. Keine Fragen, keine Probleme.

    Deine zweite Funktion will in etwa dasselbe tun. Sie nimmt mehrere Elemente, liest deren Werte aus, tut etwas damit und schreibt das Ergebnis in ein anderes Element. Wo ist Dein Problem? Wie lautet Deine konkrete Frage?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.