bei eval() Einheit "ausblenden"

Dienchen

Grünschnabel
Hallihallo,

nachdem ich das letzte mal so super geholfen bekommen habe, dachte ich ich probiere es noch einmal :)

Also ich habe einen Rechner erstellt, der bei function Hinzufuegen (Zeichen) bzw. HinzufuegenElement (Zeichen) {siehe Code} nun richtig alles hinzufuegt, ich wollte jetzt gerne noch bei dem Ergebnis und bei HinzufuegenElement (Zeichen), dass die richtige Einheit g/mol angezeigt wird. Wenn dies nur beim Ergebnis steht (Wie jetzt im ersten Code) funktioniert das auch wunderbar, aber wenn ich bei HinzufuegenElement (Zeichen) noch die Einheit hinzufuege funktioniert natürlich eval() nicht mehr, da jetzt auch Buchstaben vorhanden sind.

Wie sage ich denn dem eval() dass er alles, außer die Einheit verrechnen soll?
Code:
  function Check (Eingabe) {
    var moeglich = "0123456789[]()+*./gmol";
      for (var i = 0; i < Eingabe.length; i++)
       if (moeglich.indexOf(Eingabe.charAt(i)) < 0)
         return false;
           return true;
  }
  function Ergebnis () {
    var x = 0;
    if (Check(window.document.Rechner.Display.value))
      x = eval(window.document.Rechner.Display.value);

     window.document.Rechner.Display.value = x + ' g/mol';
   }
  function Hinzufuegen (Zeichen) {
    window.document.Rechner.Display.value = window.document.Rechner.Display.value + Zeichen;
   
  }

function HinzufuegenElement(Zeichen) {
    y = window.document.Rechner.Display;
    if (y.value.indexOf(Zeichen)  == -1) y.value += Zeichen ;
}

Hier noch der Code wie ich ihn hatte, aber da natürlich eval() nicht mehr funktioniert:

Code:
  function Check (Eingabe) {
    var moeglich = "0123456789[]()+*./gmol";
      for (var i = 0; i < Eingabe.length; i++)
       if (moeglich.indexOf(Eingabe.charAt(i)) < 0)
         return false;
           return true;
  }
  function Ergebnis () {
    var x = 0;
    if (Check(window.document.Rechner.Display.value))
      x = eval(window.document.Rechner.Display.value);

     window.document.Rechner.Display.value = x + ' g/mol';
   }
  function Hinzufuegen (Zeichen) {
    window.document.Rechner.Display.value = window.document.Rechner.Display.value + Zeichen;
   
  }

function HinzufuegenElement(Zeichen) {
    y = window.document.Rechner.Display;
    if (y.value.indexOf(Zeichen)  == -1) y.value += Zeichen + 'g/mol';
}
 
Wofür brauchst Du denn eigentlich das eval()? Gibt der Benutzer in deinem Eingabefeld eine Formel ein? Es wäre hilfreich, wenn man das Ganze mal im Zusammenhang sehen könnte. Wenn Du es online hast, dann poste doch mal die URL.
Edit: Möglicher Weise ist es eine Lösung, wenn Du vor dem eval() die Einheit aus dem String entfernst:
Code:
x = eval(window.document.Rechner.Display.value,replace("g/mol", ""));
 
Zuletzt bearbeitet:
Hey hab es leider nicht online, könnte alternativ den HTML und den CSS Code dazu posten, wird aber etwas erschlagen, da ich knapp 130 div container habe, aberrichte mich da nach dir.

Das replace funktioniert schon mal sehr gut, wenn nur einmal "g/mol" drin steht, also bei Bsp. (2g/mol + 2) drin steht wenn jetzt zum Beispiel (2 g/mol + 3 g/mol) steht geht es nicht mehr.

Vielen Dank schonmal, dass du dich nochmal mit mir beschäftigst =)
 
Zurück