Lega: Javascript Rechner geht in einem Quellcode nicht, alleine aber !

Hallo,

habe ein Problem. Undzwar habe ich einen "KW-zu-PS" Rechner geschrieben der mir Automatisch die eingetragene KW Zahl in ein PS Feld schreibt. Funktioniert soweit auch gut, aber nur wenn NUR DER RECHNER in einer eigenen HTML-Datei ist. Ich will diesen Rechner aber in ein Formular eintragen...dann funktioniert der aber nicht mehr...kann es bestimmte Gründe dafür geben???

Hier mal der Code meines Rechners:
(Die = gehören NICHT dazu und dienen nur der Übersichtlichkeit hier im Forum!!)

~~~javascript

<form name="Rechner">
      <script language="JavaScript" type="text/javascript">

function Sonderfunktion(Funktion)
 {
     var x = 0;
     x = eval(window.document.Rechner.Display.value);
window.document.Rechner.Display2.value = Math.ceil(x*1.359622-0.5);
 }
</script>
<b>KW:</b><input type="text" id="kw" name="Display" size="6" maxlength="6" onmouseout="Sonderfunktion ('Funktion')"/>
<b>PS:</b> <input type="text" id="ps" name="Display2" size="6" maxlength="6" />
 </form>

==========================================================  
  
Vielen Dank!!!!  
  
Lega  
  

  1. @@Lega:

    nuqneH

    eval(window.document.Rechner.Display.value)

    Nein! Nie und nimmer eval()*. Verwende [ref:self812;javascript/objekte/unabhaengig.htm#parse_float@title=parseFloat()] oder [ref:self812;javascript/objekte/unabhaengig.htm#parse_int@title=parseInt()]!

    Math.ceil(x*1.359622-0.5)

    Auch das ist etwas unsinnig. Zum Runden gibt es Math.[ref:self812;javascript/objekte/math.htm#round@title=round()].

    Qapla'

    * es sei denn, du weißt _ganz genau_, was du tust.

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Danke für deine Antwort. Habe die Änderungen testweise mal durchgeführt.
      Leider funktioniert das ebenfalls nicht. Es geht mir hier auch nicht um den Quellcode selber sondern um die Tatsache das der nicht in meinem Formular funktioniert.

    2. eval(window.document.Rechner.Display.value)

      ... Verwende [ref:self812;javascript/objekte/unabhaengig.htm#parse_float@title=parseFloat()] oder [ref:self812;javascript/objekte/unabhaengig.htm#parse_int@title=parseInt()]!

      Eine explizite Umwandlung ist hier nicht einmal nötig, die nimmt der *-Operator ohnehin vor (intern ToNumber, entspricht Number(x)):

      Math.ceil(x*1.359622-0.5)

      Generell erlaubt eine explizite Typumwandlung natürlich noch eine Überprüfung der Eingaben - die sollte man dann auch einbauen, z.B. mit http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#is_nan@title=isNaN.

      Mathias

  2. Moin,

    <form name="Rechner">

    <script language="JavaScript" type="text/javascript">

    function Sonderfunktion(Funktion)
    {
         var x = 0;
         x = eval(window.document.Rechner.Display.value);
    window.document.Rechner.Display2.value = Math.ceil(x*1.359622-0.5);
    }
    </script>
    <b>KW:</b><input type="text" id="kw" name="Display" size="6" maxlength="6" onmouseout="Sonderfunktion ('Funktion')"/>
    <b>PS:</b> <input type="text" id="ps" name="Display2" size="6" maxlength="6" />
    </form>

      
    und wie äußert sich nun das Nicht-Funktionieren?  
    Zusätzlich zu dem, was Gunnar schon zu eval() gesagt hat, halte ich es für unsinnig, die Umrechnung mit einem onmouseout anzustoßen - was spielt die Maus hier für eine Rolle? Genau, keine. Die Umrechnung sollte daher als submit-Ereignis stattfinden.  
      
    Außerdem ist mir schleierhaft, wozu du der Funktion noch einen Parameter mitgibst, der nirgends verwendet wird. Was möchtest du damit erreichen?  
      
    Ciao,  
     Martin  
    
    -- 
    Wer barfuß geht, dem kann man nicht die Schuld in die Schuhe schieben.  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. Das mit dem Mouseout hat nen bestimmten Grund. Das Formular soll später auf einem Touchscreen dargestellt werden und der PS Wert soll nach Eingabe des KW Wertes umgerechnet in dem Feld erscheinen.

      Wie gesagt, es geht mir darum, das dieser Code in meinem Fomrular nichtmehr geht! Nicht um den Quellcode selber! ;-)

      1. @@Lega:

        nuqneH

        Das mit dem Mouseout hat nen bestimmten Grund. Das Formular soll später auf einem Touchscreen dargestellt werden

        ?? Touchscreen und mouse…-Events?

        Mir scheint, du möchtest auf andere http://de.selfhtml.org/javascript/sprache/eventhandler.htm@title=Events reagieren: blur, change, input.

        Wie gesagt, es geht mir darum, das dieser Code in meinem Fomrular nichtmehr geht! Nicht um den Quellcode selber! ;-)

        Wie gesagt …

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Das Mouseout Event funktioniert beim Touchscreen wunderbar. Sobald die Eingabe am iPad abgeschlossen ist und man das nächste Feld anklickt wird die PS Zahl Berechnet.
          Aber was soll das mit dem "Wie gesagt ..."? Verstehe ich nicht.

          1. Hallo,

            Das Mouseout Event funktioniert beim Touchscreen wunderbar. Sobald die Eingabe am iPad abgeschlossen ist und man das nächste Feld anklickt wird die PS Zahl Berechnet.

            klar, und wenn du statt des mouseout-Events das blur- oder submit-Event nimmst, dann geht's auch mit "normalen" Clients, die eine Tastatur benutzen.

            Ciao,
             Martin

            --
            Zwei Stammtischbrüder:
            Hier steht, dass laut Statistik über 60 Prozent aller Ehefrauen fremdgehen.
            Was soll ich mit dieser Information? Ich brauche Namen, Fotos, Telefonnummern ... !
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Jagut, Back to Topic please...

              Gibt es Gründe wieso der Code in meinem Formular nichtmehr funktionieren kann?

              1. Hallo,

                Gibt es Gründe wieso der Code in meinem Formular nichtmehr funktionieren kann?

                Viele Gründe sind möglich. Dazu müsstest du uns den Code zeigen, der *nicht funktioniert* - nicht den Code, der wunderbar funktioniert. :-)

                Am besten zum Ausprobieren online stellen und hier verlinken, zur Not mit http://jsfiddle.net/ oder http://pastebin.com/.

                Ich vermute schon einmal ins Blaue hinein, dass sich die Formular- und Feld-Bezeichner in deinem anderen Formular unterscheiden, sodass das Ansprechen der Felder nicht mehr klappt. Achte auf Fehlermeldungen in der Fehlerkonsole.

                Mathias

                1. Hallo, habe das Formulat hier hochgeladen und es wird bis ich das Problem gelöst bekomme dort erreichbar sein: http://81.30.158.217/html/formular.htm

                  Nicht wundern. Habe Das Formular teilweise mitm Publisher2010 angepasst weswegen der Code jetzt so aussieht.

                  1. Hallo,

                    Hallo, habe das Formulat hier hochgeladen und es wird bis ich das Problem gelöst bekomme dort erreichbar sein: http://81.30.158.217/html/formular.htm

                    dort ist aber das Script, das die Umrechnung durchführen soll, überhaupt nicht eingebunden. Was soll uns das also nützen?

                    Nicht wundern. Habe Das Formular teilweise mitm Publisher2010 angepasst weswegen der Code jetzt so aussieht.

                    Tu das bitte nie wieder - jedenfalls nicht, wenn jemand anders den Code ansehen soll. Das ist ein Verstoß gegen die Genfer Konventionen und kann mit bis zu drei Kilo Katzendreck bestraft werden!

                    Ciao,
                     Martin

                    --
                    Fettflecke werden wieder wie neu, wenn man sie regelmäßig mit etwas Butter einschmiert.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. Ja, sorry bin nicht gerade der Experte in HTML ;-)

                      Habe ausversehen den falschen Code hochgeladen. ist jetzt der richtige!!!

                      1. Hallo,

                        Ja, sorry bin nicht gerade der Experte in HTML ;-)

                        scheint so ...

                        Habe ausversehen den falschen Code hochgeladen. ist jetzt der richtige!!!

                        Und dort sind zwei Formulare verschachtelt. Das ist in HTML nicht erlaubt - ein form-Element darf fast alles enthalten, aber kein weiteres form-Element.

                        Ciao,
                         Martin

                        --
                        Die letzten Worte des Neandertalers:
                        Möchte doch zu gern wissen, was in der Höhle ist ...
                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                        1. Habs rausgenommen. Funktioniert leider immernoch nicht.

                          1. Habs rausgenommen. Funktioniert leider immernoch nicht.

                            Wie gesagt:

                            Ich vermute schon einmal ins Blaue hinein, dass sich die Formular- und Feld-Bezeichner in deinem anderen Formular unterscheiden, sodass das Ansprechen der Felder nicht mehr klappt. Achte auf Fehlermeldungen in der Fehlerkonsole.

                            Offenbar hast du das überlesen, sonst hättest du den Fehler schon gefunden.

                            Bitte mache dir klar, was
                            document.Rechner.Display.value
                            und
                            document.Rechner.Display2.value
                            tun.

                            Sie suchen ein Formular mit name="Rechner" und darin Felder mit name="Display" bzw. name="Display2", sprechen dann deren Wert an.

                            Dein Formular hat aber keinen entsprechenden Namen – trage ihn nach.

                            Siehe:
                            http://de.selfhtml.org/javascript/objekte/forms.htm
                            http://de.selfhtml.org/javascript/objekte/elements.htm

                            Mathias

                            1. Alles klar, danke dir. Habs hinbekommen.

                  2. @@Lega:

                    nuqneH

                    Hallo, habe das Formulat hier hochgeladen

                    Da springen mir 2 Schreibfehler ins Auge:

                    • „Strasse“ schreibt sich (außer in der Schweiz) mit ß

                    • das Deppenleerzeichen in „E-Mail Adresse“.

                    Qapla'

                    --
                    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                    (Mark Twain)
                      • „Strasse“ schreibt sich (außer in der Schweiz) mit ß
                        Qapla'

                      Inwieweit soll da hinsichtlich des Javascript-Problems hilfreich sein? Meinst Du ernstlich die automatische Rechtschreibprüfung hält in einigen Browsern die Ausführung von Javascript an?

                      Fred

                      1. @@Fred Furunkelstein:

                        nuqneH

                        Inwieweit soll da hinsichtlich des Javascript-Problems hilfreich sein?

                        Wie gesagt …

                        Qapla'

                        --
                        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                        (Mark Twain)
                        1. Wie gesagt …

                          Du hast scheinbar versehentlich falsch verlinkt. Denn dort "sagst" Du nichts dazu inwieweit Schreibfehler außerhalb des eigentlichen Javascript-Codes Probleme Javascript-Probleme verursachen können.

                          Fred

                          1. @@Fred Furunkelstein 2011:

                            nuqneH

                            Wie gesagt …

                            Du hast scheinbar versehentlich falsch verlinkt.

                            Nein. Du hast scheinbar versehentlich(?) falsch verstanden.

                            Denn dort "sagst" Du nichts dazu inwieweit Schreibfehler außerhalb des eigentlichen Javascript-Codes Probleme Javascript-Probleme verursachen können.

                            Kannst du nicht verstehen oder willst du nicht verstehen, dass zusätzliche Hinweise ein besonderer Service hier im Forum sind?

                            Qapla'

                            --
                            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                            (Mark Twain)
                            1. Kannst du nicht verstehen oder willst du nicht verstehen, dass zusätzliche Hinweise ein besonderer Service hier im Forum sind?

                              Bei einen besonderen Service dieser sehr speziellen Art fällt mir das offen gestanden doch ziemlich schwer. Du musst bedenken wie das bei den Fragestellern ankommt. In der Rubrik "Webseitenbewertung" sähe das übrigens ganz anders aus.

                              Im konkreten Fall ist es nicht ganz so schlimm weil Du schon vorher hilfreiches beigetragen hast. Aber leider lese ich oft derlei "mod_speling" oder gar "mod_baloney" ohne dass die eigentliche Hilfe überhaupt stattfindet.

                              Fred