asdfafas: Switch case + Combobox

Hallo,
ich bekomme die Switchfunktion nicht hin. Und zwar habe ich verschiedene Textboxen die ich verschieden zusammenzählen lasse.
Wenn ich nun in der Combobox was anderes auswähle soll also eine andere Rechnung der Textboxen stattfinden.

Wie kann ich diese beiden Sachen verbinden?

Danke.

  1. Hi,

    ich bekomme die Switchfunktion nicht hin.

    Na sowas.

    Und zwar habe ich verschiedene Textboxen die ich verschieden zusammenzählen lasse.
    Wenn ich nun in der Combobox was anderes auswähle soll also eine andere Rechnung der Textboxen stattfinden.

    Wie kann ich diese beiden Sachen verbinden?

    Mit entsprechendem Code.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. OK tut mir leid.

      Ich habe den Code mal etwas angepasst, weil das ganz Ding sonst so lang und unübersichtlich wäre:

      <HTML>  
      <HEAD>  
        
        
      <link rel="stylesheet" type="text/css" href="layout.css">  
        
      <script src="amazon.js" type="text/javascript"></script>  
        
        
      </HEAD>  
      <BODY>  
        
      <div style="position:absolute; top: 20; left:270;">  
      <input type="button" value="Calculate" onclick="switch(n);">  
      </div>  
        
        
      <div style="position:absolute; top:58;">  
      <form>  
      <select onChange="location.href=this.options[this.selectedIndex].value">  
      <option value="">Rechnung1  
      <option value="">Rechnung2  
      </select>  
      </form>  
      </div>  
        
        
      <table border="1">  
      	<tr>  
      <td>Werte2<td>	  
      		<input type="text" id="name1" size="4" maxlength="3" value="0"><td>  
      		<input type="text" id="name2" size="4" maxlength="3" value="0"></td></tr>	  
        
      <td>Werte2<td>	  
      		<input type="text" id="name3" size="4" maxlength="3" value="0"><td>  
      		<input type="text" id="name4" size="4" maxlength="3" value="0"></td></tr>		  
      </table>  
        
        
        
      <div style="position:absolute; top: 405; left:1;">Ausgabe:  
      <input type="text" id="wert1" size="4" maxlength="3" value="0">  
      <input type="text" id="wert2" size="4" maxlength="3" value="0">  
      </div>  
        
        
        
        
        
      </BODY>  
      </HTML>
      

      Und hier due Javascriptdatei:

      switch(n)  
      {  
      case 1:  
        
      function input()  
      {  
        
      asd=  
      document.getElementById("wert1").value =  
      parseFloat(document.getElementById("name1").value)+  
      parseFloat(document.getElementById("name2").value)*3;  
        
      asdfafas=  
      document.getElementById("wert2").value =  
      parseFloat(document.getElementById("name3").value)+  
      parseFloat(document.getElementById("name4").value)-40;  
        
        
      }  
        
      break;  
        
      case 2:  
        
      asd=  
      document.getElementById("wert1").value =  
      parseFloat(document.getElementById("name1").value)+  
      parseFloat(document.getElementById("name2").value)*5;  
        
      asdfafas=  
      document.getElementById("wert2").value =  
      parseFloat(document.getElementById("name3").value)+  
      parseFloat(document.getElementById("name4").value)-10;
      

      Also die Rechnungen gehen soweit alle.
      Wäre nett wenn mir jemand sagen würde wie ich es richtig mache und wie ich es mit der Combobox verbinde.
      Danke schon mal.

      1. Mahlzeit asdfafas,

        <HTML>
        <HEAD>

        1. wäre es ratsam, sämtliche HTML-Elemente und auch deren Attribute durchgehend klein zu schreiben. Einerseits ist das etwas leserlicher, andererseits wäre ein zukünftiges "Upgrade" auf XHTML dann einfacher zu bewerkstelligen.

        2. fehlt da eine http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=Dokumenttyp-Deklaration.

        <div style="position:absolute; top: 20; left:270;">

        20 was? 270 was? Du solltest die entsprechenden Maßangaben nicht vergessen! Woher soll der Browser wissen, ob Du Pixel, Prozent, Fische oder Bauklötzen meinst?

        <input type="button" value="Calculate" onclick="switch(n);">

        Es absolut KEINE gute Idee, eine eigene Funktion genauso wie <http://de.selfhtml.org/javascript/sprache/bedingt.htm#switch@title=ein bereits vorhandes Sprachelement> zu benennen. Korrigiere das!

        <form>

        Es fehlt das erforderliche "http://de.selfhtml.org/html/referenz/attribute.htm#form@title=action"-Attribut.

        <option value="">Rechnung1
        <option value="">Rechnung2

        Du öffnest hier ein <http://de.selfhtml.org/html/formulare/auswahl.htm#listen@title=<option>>-Element, schließt es aber nicht. Ja, es ist möglich, das schließende </option> wegzulassen - Du solltest Dich aber am besten gar nicht erst daran gewöhnen, unsauberen Code zu schreiben!

        switch(n)
        {
        case 1:

        Das steht einfach so in der Datei? Dir ist schon klar, dass dieser Code dann direkt nach dem Einbinden der Datei ausgeführt wird?

        function input()
        {

        Bitte? Eine Funktionsdeklaration innerhalb eines switch()? Weißt Du eigentlich, was Du da tust?

        asd=
        document.getElementById("wert1").value =
        parseFloat(document.getElementById("name1").value)+
        parseFloat(document.getElementById("name2").value)*3;

        Was sagt die Fehlerkonsole Deines Browsers zu diesem Code?

        Wäre nett wenn mir jemand sagen würde wie ich es richtig mache und wie ich es mit der Combobox verbinde.

        Informiere Dich zum Stichwort "valider Code". Ignoriere die Fehlerkonsole Deines Browser nicht.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Ahh danke sehr soweit. Habe alles so gemacht wie du es mir geraten hast.

          Bitte? Eine Funktionsdeklaration innerhalb eines switch()? Weißt Du eigentlich, was Du da tust?

          Durchaus weiß ich das NICHT. Genau das ist ja auch der Grund warum ich hier um Hilfe gebeten habe. :)

          Ich habe es mir jetzt so gedacht:

          <form name=char>  
          <select onChange="location.href=this.options[this.selectedIndex].value">  
          <option id="combowerte1">Rechnung 1</option>  
          <option id="combowerte2">Rechnung 2</option>  
          </select>  
          </form>  
            
            
          <input type="button" value="Calculate" onclick="switch(n);">  
          
          
            
          function switch(n)  
            
          {  
          case 1:  
            
          document.getElementById("combowerte1")=  
             asd=  
             document.getElementById("wert1").value =  
             parseFloat(document.getElementById("name1").value)+  
             parseFloat(document.getElementById("name2").value)*3;  
            
          break;  
            
            
          case 2:  
            
          document.getElementById("combowerte2")=  
             asdfafas=  
             document.getElementById("wert2").value =  
             parseFloat(document.getElementById("name3").value)+  
             parseFloat(document.getElementById("name4").value)-40;  
            
          break;  
          
          

          Und bei der Fehlerkonsole wird mir gesagt, dass "Name1" null ist.

          1. Mahlzeit asdfafas,

            Ahh danke sehr soweit. Habe alles so gemacht wie du es mir geraten hast.

            Nein, hast Du nicht.

            Durchaus weiß ich das NICHT. Genau das ist ja auch der Grund warum ich hier um Hilfe gebeten habe. :)

            Dann solltest Du als erstes die hier gegebenen Tipps und Hinweise erstnehmen und insbesondere verlinkte Artikel bzw. Bereiche aus SELFHTML lesen und verstehen. Ich hatte Dich darauf hingewiesen, dass es keine gute Idee ist, eine eigene Funktion zu deklarieren, die genauso heißt, wie ein in Javascript vorhandenes Sprachkonstrukt - im konkreten Fall http://de.selfhtml.org/javascript/sprache/bedingt.htm#switch@title=switch().

            <input type="button" value="Calculate" onclick="switch(n);">

            function switch(n)

            Du benutzt diesen Namen jedoch fröhlich weiterhin für Deine Funktion. Ändere das. Vorher ist jegliche weitere Hilfe sinnlos.

            document.getElementById("combowerte1")=
               asd=
               document.getElementById("wert1").value =
               parseFloat(document.getElementById("name1").value)+
               parseFloat(document.getElementById("name2").value)*3;

            Was genau soll das bezwecken? Vielleicht solltest Du Dich (nochmal) mit <http://de.selfhtml.org/javascript/sprache/operatoren.htm@title=Operatoren in Javascript> sowie dem Zugriff auf http://de.selfhtml.org/javascript/objekte/elements.htm@title=Formularelemente befassen.

            break;

            Dass Du anschließend vergisst, die geöffnete geschweifte Klammer zu schließen, ist dann nur noch nebensächlich ...

            Und bei der Fehlerkonsole wird mir gesagt, dass "Name1" null ist.

            Und wo bzw. wer oder was genau soll "Name1" sein? Ein Objekt dieses Namens finde ich nicht in dem von Dir gezeigten Code. Welchen Browser benutzt Du? Normalerweise ist nur der IE so wenig gesprächig. Ändere auch das - verwende einen vernünftigen Browser mit einer aussagekräftigen Fehlerkonsole (z.B. Firefox).

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Ich sagte doch, dass der Rest einwandfrei geht, bis auf die Switchfunktion in der Combobox.
              Ist ja nett, dass du mir bei den anderen Sachen auch hilfst, aber darum hatte ich eigentlich nicht gebeten.
              Mein größtes anliegen ist natürlich wie mein Beitrag sagt "Switch case + Combobox".

              Die Anleitung zu der Switchfunktion habe ich auch schon gelesen.
              Ich weiß zwar was case und break ist, aber in der Kombination mit der Combobox komm ich nicht weiter.

              1. Mahlzeit asdfafas,

                Ich sagte doch, dass der Rest einwandfrei geht, bis auf die Switchfunktion in der Combobox.

                Es gibt weder in HTML noch in Javascript weder eine Switchfunktion, noch eine Combobox.

                Es gibt in Javascript eine switch()-Anweisung (nein, ich verlinke den entsprechenden Teil in SELFHTML jetzt nicht nochmal) und es gibt in HTML eine Auswahlliste bzw. Selectbox. Letztere hast Du in Deinem HTML-Code. Was sie allerdings bezwecken soll, ist mir nicht klar, da der Javascript-Code in ihrem onchange-Handler offensichtlich fehlerhaft ist.

                Die switch()-Anweisung hingegen benutzt Du immer noch fehlerhaft. Einen Link zur Dokumentation habe ich Dir genannt. Genutzt hat das jedoch offenbar nichts.

                Vielleicht solltest Du mal in normalen Worten beschreiben, was Du eigentlich vor hast. Ansonsten ist es ziemlich mühselig, Dir helfen zu wollen. Und Hilfe willst Du wohl - sonst wärst Du nicht hier. Also tu Dir selbst einen Gefallen und mach es denen, die Dir helfen wollen, nicht unnötig schwer.

                Ist ja nett, dass du mir bei den anderen Sachen auch hilfst, aber darum hatte ich eigentlich nicht gebeten.

                Das ist richtig. Andererseits zwingst Du Deine Leser ja geradezu, Dein Anliegen zu erraten ... Deine Problembeschreibung jedenfalls ist mehr als dürftig.

                Mein größtes anliegen ist natürlich wie mein Beitrag sagt "Switch case + Combobox".

                Diese Aneinanderreihung von Buchstaben ist - wie oben bereits geschrieben - ziemlich sinnfrei. Dass Du irgendwas mit einer Selectbox und einer Verzweigung je nach Wert einer Variablen machen möchtest, ist klar. Aber WAS?

                Die Anleitung zu der Switchfunktion habe ich auch schon gelesen.

                Dass es keine Funktion ist, habe ich ja bereits erläutert. Wenn Du den von mir verlinkten Teil von SELFHTML gelesen hast - wieso hast Du ihn dann nicht verstanden (davon muss ich ausgehen, wenn Du die switch()-Anweisung immer noch falsch verwendest)? Wieso fragst Du nicht nach?

                Ich weiß zwar was case und break ist, aber in der Kombination mit der Combobox komm ich nicht weiter.

                Von Deinen Lesern kann auch keiner weiterkommen, wenn Du nicht beschreibst, was Du eigentlich erreichen willst. Dein Code ist so falsch, dass es nahezu unmöglich ist, daraus zu erraten, was Du vielleicht möchtest.

                Ich fasse nochmal zusammen, was ich Deinen bisherigen Beiträgen entnehmen konnte:

                Du möchtest in irgendeiner Form mit den Inhalten zweier Eingabefelder eine Berechnung anstellen. Welche Berechnung das sein soll, soll durch verschiedene Optionen einer Auswahlliste festgelegt werden.

                Soweit richtig?

                Dann sorge bitte zunächst dafür, dass Du ein vernünftiges HTML-Formular hast, indem die dafür benötigten Eingabeelemente vorhanden und auch benannt sind.

                Vorschlag:

                <form>  
                  <label for="eingabe1">1. Zahl:</label> <input type="text" name="eingabe1" id="eingabe1">  
                  
                  <label for="berechnung">Berechnung:</label> <select name="berechnung" id="berechnung">  
                    <option value="+">plus</option>  
                    <option value="-">minus</option>  
                    <option value="*">mal</option>  
                    <option value="/">geteilt</option>  
                  </select>  
                  
                  <label for="eingabe2">2. Zahl:</label> <input type="text" name="eingabe2" id="eingabe2">  
                  
                  <label for="ausgabe">Ergebnis:</label> <input type="text" name="ausgabe" id="ausgabe" readonly="readonly">  
                </form>
                

                Einverstanden? Dann sag Bescheid, wenn wir uns den zweiten Schritt (den man immer erst NACH dem ersten tun sollte!) vornehmen können.

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Mahlzeit nochmal,

                  Einverstanden? Dann sag Bescheid, wenn wir uns den zweiten Schritt (den man immer erst NACH dem ersten tun sollte!) vornehmen können.

                  Da mir gerade danach ist, mache ich einfach mal weiter:

                  Wir haben also jetzt ein Formular, wo der Benutzer Werte eingeben und die Berechnungsmethode auswählen kann. Jetzt fehlt nur noch die entsprechende Berechnung:

                  Javascript:
                  -----------

                  function berechne(formular) { // Funktion erwartet als Parameter das Formular, in dem sich die Eingabefelder befinden  
                    var eingabe1 = parseFloat(formular.elements['eingabe1'].value); // Wert des ersten Eingabefeldes einlesen und in numerischen Wert umwandeln  
                    var eingabe2 = parseFloat(formular.elements['eingabe2'].value); // Wert des zweiten Eingabefeldes einlesen und in numerischen Wert umwandeln  
                    var ausgabe = '';  
                    
                    if (!isNaN(eingabe1) && !isNaN(eingabe2)) { // Wenn es sich um Zahlen handelt  
                      switch (formular.elements['berechnung'].value) { // Unterscheidung der verschiedenen Berechnungen  
                        case '+':  
                          ausgabe = eingabe1 + eingabe2;  
                        break;  
                    
                        case '-':  
                          ausgabe = eingabe1 - eingabe2;  
                        break;  
                    
                        case '*':  
                          ausgabe = eingabe1 * eingabe2;  
                        break;  
                    
                        case '/':  
                          ausgabe = eingabe1 / eingabe2;  
                        break;  
                      }  
                    }  
                    
                    if (ausgabe.toString(10) != '') { // Wenn ein Berechnungsergebnis vorliegt  
                      formular.elements['ausgabe'].value = ausgabe; // Ausgabefeld füllen  
                    }  
                  }
                  

                  HTML:
                  -----

                  <form>  
                    <label for="eingabe1">1. Zahl:</label> <input type="text" name="eingabe1" id="eingabe1" onchange="berechne(this.form);" onblur="berechne(this.form);">  
                    
                    <label for="berechnung">Berechnung:</label> <select name="berechnung" id="berechnung" onchange="berechne(this.form);">  
                      <option value="+">plus</option>  
                      <option value="-">minus</option>  
                      <option value="*">mal</option>  
                      <option value="/">geteilt</option>  
                    </select>  
                    
                    <label for="eingabe2">2. Zahl:</label> <input type="text" name="eingabe2" id="eingabe2" onchange="berechne(this.form);" onblur="berechne(this.form);">  
                    
                    <label for="ausgabe">Ergebnis:</label> <input type="text" name="ausgabe" id="ausgabe" readonly="readonly">  
                  </form>
                  

                  Das ist erstmal nur ein grober Vorschlag - insbesondere ungetestet! Du musst das natürlich für Deine Zwecke anpassen.

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|