Probleme mit JavaScript Berechnungen

  • Hallo Leute,

    ich bekomme beim Fox´l bei folgender Aktion immer den Fehler NaN
    (not a number) in die Zelle geschrieben.
    Ich berechne hier aus Tabellenzellen einen Prozentwert, runde und
    bearbeite das Ergebnis noch.
    Kann mir bitte jemand sagen, was hier falsch ist bzw. warum ich hier in
    den Ergebniszellen der Tabelle immer NaN stehen hab.
    Vielen Dank für eure Hilfe

    Gruß,
    Slowhand

  • Was machen die einzelnen Funktion denn? Auf Anhieb verstehe ich z.B. MakeNum nicht wirklich.

    Du benutzt glaub gerne mal Methoden des String-Objektes bei Zahlen und verwendest diese Strings wieder als Zahlen. Ein paar .toString() und parseInt()/parseFloat() würden vermutlich auch der Übersichtlichkeit ganz gut tun.

  • Hi,
    die Funktion MakeNum entfernt aus den Zahlen die Tausendertrennzeichen, damit ein Division möglich ist.
    Ich lese die Zahlen aus einer Tabelle raus, wo sie mit diesen Trennzeichen stehen.

    Die Funktion MakeTwo hängt schließlich an das Erebnis einen Punkt und
    2 Nullen dran, also wenn erg = 40 dann wird daraus 40.00

    Kannst du mir weiterhelfen ?

  • so hat es bei mir (mit 2 beliebigen Zahlen als Parameter für RoundPi) geklappt:

  • Vielen Dank für deine Bemühungen,
    aber es klappt einfach nicht ...
    Wenn ich per Hand 2 Zahlen vergebe, dann klappts bei mir auch, aber
    wenn die Zahlen aus der Tabelle kommen -> NaN
    Hier die Zeile wie ich die beiden Zahlen aus der Tabelle auslese:


    Vielleicht hat´s irgendwas mit dem outerText zu tun ?
    Kannst du bitte nochmal schauen ...

    Danke,
    Slowhand

  • Vermutlich. Firefox scheint outerText nämlich gar nicht zu unterstützen.
    Stattdessen das im DOM-Standard enthaltene textContent.

    Du wirst also überprüfen müssen, ob outerText vorhanden ist, oder ob textContent vorhanden ist (oder keins von beidem):

    Code
    if(table.outerText)
      var ref = table.rows[i].cells[pii].outerText;
    else if(table.textContent)
      var ref = table.rows[i].cells[pii].textContent;
    else
      return;
  • Super, das ist es !

    Ich würde die Entscheidung vom Browser abhängig machen:

    Code
    if(navigator.appName == 'Netscape')		
    			var ref = table.rows[i].cells[pii].textContent;
    		else
    			var ref = table.rows[i].cells[pii].outerText;

    Ist das so OK ?

    Vielen Dank für deine Hilfe !!!

    Slowhand

  • man kann seine Browser-Kennung sehr leicht fälschen. (vor allem in Opera, aber auch in anderen Browsern) Aus Paranoia oder wegen unberechtigten Aussperrens machen das auch einige.
    Der von mir gewählte Uberprüfung ist das egal, da auf die Eigenschaften, die gebraucht werden, und wegen denen die Abfrage überhaupt stattfindet, überprüft wird.