Javascript条件始终为false

Javascript条件始终为false,javascript,angularjs,Javascript,Angularjs,我有一个网站,在那里我使用AngularJS元素,比如md input container和md datepicker 我(在老师的帮助下)编写了一个如下所示的javascript程序,它允许我知道用户是否在输入中输入了正确的信息并选择了正确的日期 angular.module('BlankApp', ['ngMaterial']) .controller ('AppCtrl', function() { var ctrl = this; this.aller = ""; this

我有一个网站,在那里我使用AngularJS元素,比如
md input container
md datepicker

我(在老师的帮助下)编写了一个如下所示的javascript程序,它允许我知道用户是否在输入中输入了正确的信息并选择了正确的日期

angular.module('BlankApp', ['ngMaterial'])
.controller

('AppCtrl', function() {
  var ctrl = this;
  this.aller = "";
  this.retour = "";
  this.date;

  this.checkValue = function() {

    if((this.aller.toLowerCase()=="montpellier" &&     this.retour.toLowerCase()=="marseille")
      && (this.date != null && this.date.toString() == "Fri Jun 10 2016 00:00:00 GMT+0200")) {
      document.location.href="recherche.html";
    }
  else
  {
    alert("Veuillez saisir Montpellier et Marseille, et le 10 juin 2016");
  }
}
});
如果条件为真,当用户单击一个按钮时,它会将用户带到“recherche.html”页面。但是,即使条件得到满足,它仍会显示警报。

此行:

var ctrl = this;
这很重要。它保存
的值以供以后使用。对于
时,此
可能指控制器以外的其他对象

当您在另一个函数中使用此时,就是这个时刻。在该函数中,使用
ctrl
而不是
this
,您就可以开始了

下面是一个完整的演示:

angular.module('BlankApp',[])
.controller('AppCtrl',function(){
var ctrl=this;
ctrl.aller=“蒙彼利埃”;
ctrl.retour=“马赛”;
ctrl.date=“2016年6月10日星期五00:00:00 GMT+0200”;
ctrl.checkValue=函数(){
如果(ctrl.aller.toLowerCase()=“蒙彼利埃”
&&ctrl.retour.toLowerCase()=“马赛”
&&!!ctrl.date
&&ctrl.date.toString()=“2016年6月10日星期五00:00:00 GMT+0200”){
警报('Will do:document.location.href=“recherche.html”);
}否则{
警报(“2016年蒙彼利埃和马赛等10亿美元”);
}
}
});

Aller:
返回:
日期:
校验值
checkValue是如何调用的?发布不可能的相关代码。调用函数时,这些值可能不是您认为的值。@Rooster Trouverhmm。。。。从理论上讲,这不会因为语法错误而导致警报永远不会发生吗
undefined不是一个函数
或类似的功能如果您指出Kevin B,即使我键入了所需条件以外的内容,警报框也不会appear@Jeroen谢谢你关注我的问题。我在几个小时前解决了这个问题,但是我的连接被切断了,所以我无法发布。问题是,Mozilla支持ctrl.date值(因为我的老师在Mozilla浏览器中进行了测试)。我不得不加上“(欧洲中央银行-Heuredété)”,这样它就可以在Chrome上运行了。我想我会为Mozilla browser添加一个if条件,在Javascript中集中处理日期/时间可能会很糟糕,如果它必须跨浏览器工作,则会很糟糕。帮你自己一个忙,看看推荐的库,或者类似的东西。