Rudi: wert aktualisieren

Hallo,
ich will dass man xy und z einegben kann,
kann man auch bereits, aber dann soll das volumen berechnet werden,
und aktualisiert wird bei geänderter eingabe.
Wie geht des?
Hier mein bisheriger code, der aber einen Fehler aufzeigt:

<html>
<head>
<style type="text/css">
<!--
body,input {
 font-family: Tahoma;
 font-size: 10pt;
 text-align: left;
}
--></style>
<script language="javascript">
<!--
function sync (new_x)
{
x = formular01.x.value
document.write ("<div style="position: absolute; left: 600; right: 100;">'+x+'</div>")
}
//-->
</script>
</head>

<body style="background-color: #FFEEDD;">

<form name="formular01">
Geben Sie Werte XYZ ein:<br>
<br>
x: <input style="background-color= #DDDDFF; text-align: center;" size="3" name="x" maxlength="4" type="text" value="2"><br>
y: <input style="background-color= #DDDDFF; text-align: center;"  size="3" name="y" maxlength="4" type="text" value="3"><br>
z: <input style="background-color= #DDDDFF; text-align: center;"  size="3" name="z" maxlength="4" type="text" value="4"><br>
</form>

<script language="javascript">
<!--
var x,y,z,v
x = formular01.x.value
y = formular01.y.value
z = formular01.z.value
v = x*y*z
document.write (v)
//-->
</script>

</body>
</html>

  1. Hallo,

    Hallo,
    ich will dass man xy und z einegben kann,
    kann man auch bereits, aber dann soll das volumen berechnet werden,
    und aktualisiert wird bei geänderter eingabe.
    Wie geht des?
    Hier mein bisheriger code, der aber einen Fehler aufzeigt:

    Zunächst einmal der Fehler. Er liegt in dieser Zeile: document.write ("<div style="position: absolute; left: 600; right: 100;">'+x+'</div>").
    Versuche es mal so:
    document.write ('<div style="position: absolute; left: 600; right: 100;">'+x+'</div>');

    Dann grundsätzlich: Du möchtest, daß auf eine Benutzereingabe hin etwas passiert. Das heißt, Du möchtest, daß Dein Script auf ein Ereignis passiert -> Stichwort "Events".
    In Deinem Fall bietet sich an, entweder eine Änderung des Inhalts der Eingabefelder abzufangen ("change") oder aber einen Submit-Button einzubauen (z.B. mit dem Aufschrift "Volumen berechnen") und dann mit dem Event "submit" zu arbeiten.

    Hilft Dir das weiter?

    Ciao,
    Andreas

    --
    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
    1. Hallo,

      es sollte heißen: "[...] daß Dein Script auf ein Ereignis reagiert [...]"...

      Ciao,
      Andreas

      --
      "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
    2. Mahlzeit.

      Stimmt. Jetzt weiß ich, was ich übersehen hab bei meinem Tip.

      MFG
      Griever

      --
      LOOK MY PAGE!
    3. In Deinem Fall bietet sich an, entweder eine Änderung des Inhalts der Eingabefelder abzufangen ("change") oder aber einen Submit-Button einzubauen (z.B. mit dem Aufschrift "Volumen berechnen") und dann mit dem Event "submit" zu arbeiten.

      Ich hab mal onchange bei dem ersten feld gemacht und
      ein 4. feld für das volumen,
      aber wie änder ich den wert in v über die funktion?

      <script language="javascript">
      <!--
      function sync (var)
      {
      var = formular01.'+var+'.value;
      }
      //-->
      </script>
      </head>

      <body style="background-color: #FFEEDD;">

      <form name="formular01">
      Geben Sie Werte XYZ ein:<br>
      <br>
      x: <input style="background-color= #DDDDFF; text-align: center;" size="3" name="x" maxlength="4" type="text" value="2" onchange="sync(x)"><br>
      y: <input style="background-color= #DDDDFF; text-align: center;"  size="3" name="y" maxlength="4" type="text" value="3"><br>
      z: <input style="background-color= #DDDDFF; text-align: center;"  size="3" name="z" maxlength="4" type="text" value="4"><br>
      <br>
      v: <input style="background-color= #DDDDFF; text-align: center;"  size="3" name="v" maxlength="4" type="text" value="0" readonly><br>
      </form>

      1. Hallo,

        Ich hab mal onchange bei dem ersten feld gemacht und
        ein 4. feld für das volumen,
        aber wie änder ich den wert in v über die funktion?

        indem Du auf das Feld v genauso zugreifst, wie auf die Felder für x, y und z, nur daß Du bei v den Wert nicht ausliest, sondern ihn zuweist.

        Konkret:
        baue Dir doch eine Funktion, die jedesmal, wenn sie aufgerufen wird, die Werte der Felder x, y und z ausliest, daraus das Volumen berechnet und diesen Wert wiederum dem Feld v zuweist.
        Diese Funktion, die z.B. berechneVolumen() oder computeVolume() heißen könnte, rufst Du dann bei onchange oder onkeyup auf.

        Ciao,
        Andreas

        --
        "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
      2. Tag Rudi.

        var = formular01.'+var+'.value;

        Du solltest *nie* reservierte Wörter als Variablenname nutzen, in diesem Falle "var". Darüber hinaus solltest du dir mal die verschiedenen Möglichkeiten des Zugriffs auf Formularelemente ansehen, dort insbesondere Beispiel 3.

        <input [...] size="3" name="x" maxlength="4" type="text" value="2" onchange="sync(x)">

        Die Variable x ist undefined, du möchtest doch sicher den String "x" an die Funktion übergeben, oder?

        Siechfred

    4. Hallo Andreas,

      Zunächst einmal der Fehler. Er liegt in dieser Zeile: document.write ("<div style="position: absolute; left: 600; right: 100;">'+x+'</div>").
      Versuche es mal so:
      document.write ('<div style="position: absolute; left: 600; right: 100;">'+x+'</div>');

      wenn schon korrigieren, dann bitte richtig. Bei diesem Inline-Style fehlen sämtliche Maßeinheiten: Was sind die 600 bzw. 100? Nanometer? Parsec? Zoll? Kastanien?

      So long,

      Martin

      --
      Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.
      1. Hallo,

        wenn schon korrigieren, dann bitte richtig. Bei diesem Inline-Style fehlen sämtliche Maßeinheiten: Was sind die 600 bzw. 100? Nanometer? Parsec? Zoll? Kastanien?

        Ellen natürlich, Sie Querulant!

        Nee, hast natürlich völlig recht.
        ;)

        Ich würde dem Frager aber - wie es auch schon Siechfried getan hat - ohnehin empfehlen, sich noch einmal mit ein paar Grundlagen zu befassen. Ganz ohne geht es eben nicht.

        Ciao,
        Andreas

        --
        "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
  2. Mahlzeit.

    Hallo,
    ich will dass man xy und z einegben kann,
    kann man auch bereits, aber dann soll das volumen berechnet werden,
    und aktualisiert wird bei geänderter eingabe.
    Wie geht des?

    Vielleicht solltest du versuchen, die Eingabefelde folgendermaßen anzusprechen:

      
    document.forms["formular01"].elements["x"]  
    document.forms["formular01"].elements["y"]  
    document.forms["formular01"].elements["z"]  
    
    

    Ist zwar länger, aber dafür müßte es funktionieren. Außerdem solltest du immer zuerst den Body-Tag ansprechen.

    Als Zweites würde ich dir empfehlen, mit onChange oder onBlur zu arbeiten. Es ginge auch mit OnKeyUp. Doch da müßte man vielleicht als sicherheitsabfrage mache, ob was drin steht und wenn, obs eine Zahl ist.

    MFG
    Griever

    --
    LOOK MY PAGE!