2016-11-25 4 views
1

Ich versuche zu überprüfen, ob meine Variable nur eine Länge von eins hat.Die Verwendung der Längenfunktion gibt undefined zurück

Ich tue dies in etwa so:

var n = new Date(); 
$scope.h = n.getHours(); 
$scope.m = n.getMinutes(); 

console.log($scope.h.length) // returns undefined 

if($scope.h.length < 2 && $scope.m.length < 2) { 
    $scope.hm = $scope.h * 10 + "" + $scope.m * 10; 
    console.log($scope.hm); 
} 

aber scope.h.length undefined zurück $. Warum? Wie soll ich das besser machen?

+0

Sie versuchen Länge für integer zu überprüfen, das ist der Grund, warum Sie nicht definiert getHours bekommen() gibt integer –

+1

Da getHours() retuens eine ganze Zahl, YOu Cannoy Zugriffslänge Eigenschaft auf einer ganzen Zahl –

+0

Was ist eine Alternative? – olivier

Antwort

3

Sie verwendeten Date.prototype.getHours() Theta Return eine integer number so können Sie nicht direkt .length darauf verwenden.

Die Lösung ist die toString() Funktion zu verwenden, bevor die Länge

OR

Einnahme können Sie = "" + h

var n = new Date(); 
 
var h = n.getHours(); 
 
var m = n.getMinutes(); 
 

 
var hString = "" + h; 
 
var mString = m.toString(); 
 

 
console.log(hString.length); 
 
console.log(mString.length);

0

getHours() gibt eine Nummer. Zahlen haben keine Längeneigenschaft. Versuchen Sie, Ihre Zahl zuerst mit $ scope.h.toString() in einen String zu konvertieren.

3

Sie müssen die Länge in Ihrem Fall nicht überprüfen.

if($scope.h < 10 && $scope.m < 10) {