Reinhard: Werte auslesen und automatisch hinzufügen

Beitrag lesen

Guten Abend,

hi, genau das hat funktioniert. nur leider stehe ich jetzt vor einem weiteren problem...
Ich möchte solch eine Funktion: Input Feld ist leer, ich gebe ein Value ein, ich klicke aus dem Feld, zu dem Value kommt ein Inhalt X (z.b. Value + Minuten) (also 7 Minuten), ich klicke erneut in das Feld und der Inhalt wird gelöscht, ich mache keine Änderung und der alte Inhalt erscheint wieder, ich klicke erneut rein und der Inhalt wird wieder gelöscht, ich mache eine Änderung, die Änderung bleibt erhalten + ein Inhalt X (z.b. Value + Minuten) (also neue Zahl 8 Minuten) mein bisheriges Script:

var safevalue;                 
function addwert(inputvalue, elementid) {
    var adding = " Minuten";
    var wert = inputvalue + adding;
    if (safevalue == wert)
      {
      document.getElementById(elementid).value = safevalue;
      }
     else
      {
      if (inputvalue == '')
        {
        inputvalue = '';
        }
       else
        {
        document.getElementById(elementid).value = wert;
        }
      }
    console.log(safevalue)
    console.log(wert)
}
function checkwert(value, elementid) {
    safevalue = value;
    document.getElementById(elementid).value = '';
}
<table>
  <tr>
    <td>Gesamttagesl&auml;nge</td>
    <td><input type="text" placeholder="TEST" id="Dayark" name="Werteingabe" value="" onblur="addwert(this.value, this.id)" onfocus="checkwert(this.value, this.id)"></td>
  </tr>
  <tr>
    <td>Nachtl&auml;nge</td>
    <td><input type="text" placeholder="TEST" id="Nightspeedark" name="Werteingabe" value="" onblur="addwert(this.value, this.id)" onfocus="this.value=''"></td>
  </tr>
  <tr>
    <td>Tagesl&auml;nge</td>
    <td><input type="text" placeholder="TEST" id="Dayspeedark" name="Werteingabe" value="" onblur="addwert(this.value, this.id)" onfocus="this.value=''"></td>
  </tr>
  <tr>
    <td><input type="button" onclick="rechnen()" name="Werteingabe" value="Berechnen"></td>
    <td></td>
  </tr>
</table>

Versuchs mal so:

var dayark = document.getElementById('Dayark'),
    nightspeedark = document.getElementById('Nightspeedark'),
    dayspeedark = document.getElementById('Dayspeedark'),
    button = document.querySelectorAll('input[type=button]')[0],
    safevalue = '';
dayark.addEventListener('blur', addwert);
dayark.addEventListener('focus', checkwert);
nightspeedark.addEventListener('blur', addwert);
nightspeedark.addEventListener('focus', function() {
    this.value = '';
});
dayspeedark.addEventListener('blur', addwert);
dayspeedark.addEventListener('focus', function() {
    this.value = '';
});
button.addEventListener('click', rechnen);
function rechnen() {}
function addwert()
{
this.value = (this.value == '') ? safevalue : this.value + ' Minuten';
}
function checkwert()
{
safevalue = this.value;
this.value = '';
}

Das Script einfach in ein document load Event packen und es sollte laufen.
Habe deine Events so übernommen, wie du sie gesetzt hast. Ich weiß zwar nicht, warum die beiden letzten Felder nicht auch die checkwert Funktion für das focus Event bekommen, aber du wirst schon wissen, was du machst.
Das weiteren kannst du diesen Umlaut-Ersetzungs-Kram getrost vergessen. Speichere einfach deine .htm(l) Datei mit UTF-8 Codierung ab und füge dem head-Bereich <meta charset="utf-8"> hinzu.
Auch die ganzen name Attribute kannst du verwerfen, wenn sie gar keinem Zweck dienen.
Auch die ganzen value = "" sind überflüssig, soweit ich weiß. Mein Firefox (V. 37) merkt sich Eingaben für Textfelder bei einem einfachen Reload. Da muss ich schon mit Javascript ran um die zu reinigen.
Und: bitte formattiere Code nach, wenn du ihn hier reinkopierst. Es erleichtert das Lesen um ein Vielfaches.

Thema "Zahl aus einem Input auslesen":

//gegeben sei ein String welcher folgendermaßen aufgebaut ist: "Zahl(en) Minuten"
//an die Nummer kommst du so:
var str = '7 Minuten',
    num = str.match(/([0-9]+) Minuten|/)[1];
if (num)
  num = Number(num);

Wenn du etwas mehr über Reguläre Ausdrücke wissen willst, hier ist ein klasse Artikel.

Reinhard