2016-10-11 5 views
1

私はかなり単純なif文を持っていますが、JavaScriptをあまり使わないので、どこかでエラーが発生していると思います。私のページに行くと、値が未定義であると警告されているのがわかりますが、ifパラメータが== undefinedであっても、コードブロックはスキップされます。これはAngularJSアプリだと重要ですか?日付をNaNと比較し、未定義

Webページ:http://alainwebdesign.ca/pl2/#/petType

のjavascript:

$scope.setDate = function (dateSelected) { 
    alert(dateSelected); 
    var now = new Date(); 
    $scope.latest = new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes()); 
    $scope.hoursAgo = Math.round((($scope.latest - dateSelected)/3600000) * 100)/100; 
    if ($scope.hoursAgo === undefined || $scope.hoursAgo == NaN) { 
     alert("Please choose a date/time"); 
    } 
    else { 
     alert('You lost your pet ' + $scope.hoursAgo + ' hour(s) ago'); 
     $scope.checkDateSet = true;    
    } 
} 
+3

[未定義のオブジェクトのプロパティを検出]の可能重複します(http:を//aackoverflow.com/questions/27509/detecting-an-undefined-object-property) – Liam

+0

@ Liamしかし、その質問にNaNはどこにもありません。それが私の主な問題でした。 –

答えて

1

この

if ($scope.hoursAgo === 'undefined' || isNaN($scope.hoursAgo)) { 
+0

それはうまくいきました、ありがとう!私はあなたの答えを5分で受け入れることができます。それはちょうどAngularJSのことか、NaNは常にそのようにチェックされるべきですか? –

+0

@Thomasは常にJSです。 Angularとは関係ありません。 – fredrik

2

あなたの問題は、あなたのif文ではないようif ($scope.hoursAgo === undefined || $scope.hoursAgo == NaN)

書き込みをチェックします。 NaNのJavascriptは多少特殊です。例えば

NaN === NaN // false

あなたはもっとここでそれについて読むことができます。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN

に小切手を変更

if ($scope.hoursAgo === undefined || isNaN($scope.hoursAgo)) { 
... 
} else {..}