2017-06-17 2 views
2

Ich habe diesen Code erstellt, um zu überprüfen, ob Wert die Zahl ist oder nicht, aber es scheint nicht zu funktionieren.ist keine Zahl in Winkel js

app.controller('ForCtrl', function($scope) { 
    $scope.calcul_factorielle = function() { 

     var mm = 1; 
     if ((typeof ($scope.test) !== 'number')) $scope.factorielle = " invalide saisie"; 

     for(i=2;i<=$scope.test;i++) { 
      mm = mm * i; 
     } 
     $scope.factorielle = mm; 
    } 
}); 

Warum, wenn ich Eingabe Zeichenfolge stackoverflow bin ich nicht die 'invalide saisie' Meldung in der Ausgabe zu erhalten?

Antwort

2

Nach dieser if Anweisung, wenn Ihr Text keine Zahl ist, müssen Sie die Ausführung der Funktion mit dem Schlüsselwort return brechen. In Ihrem Fall wird der Code nach der if Anweisung fortgesetzt, so dass Sie ein falsches Ergebnis erhalten.

Zuerst müssen Sie es in number analysieren, weil jeder Eingang ein string ist und danach versuchen, isNaN() Funktion zu verwenden. Wenn die Zeichenfolge number nicht analysiert werden kann, wird eine NaN zurückgegeben.

var number = Number.parseInt($scope.test); 
if (isNaN(number)) { // or i 
     $scope.factorielle = " invalide saisie"; 
     return; 
} 
+0

ich meinen Code Modifikator mit Ihrem Code aber ich haven‘ t irgendein Ergebnis, und wenn ich einen Zahlwert eintrage, habe ich kein Ergebnis auch –

+0

okey jetzt, wenn ich einen Zahlwert eintrage, habe ich Mitteilung ungültige saisie :( –

+0

helfen Sie mir bitte. –

0

Das Problem ist in der if-Anweisung gelten parseFloat vor typeof Operator, so ersetzen:

typeof ($scope.test) !== 'number' 

An:

(typeof (parseFloat($scope.test)) !== 'number') 
+0

bitte helfen Sie mir .. –

+0

Vielen Dank an alle, um mir zu helfen –