JS错误:预期对象

oJM*_*86o 2 javascript

我加载了我在IE中开发的内部页面,并在底部显示了一些JS错误:它显示第107行的字符6。我查看了JScript文件,它具有以下代码:

 function isLessThanStartDate(obj)
    {
     var startdate = new Date(document.getElementById('txtSD').value);
     var enddate = new Date(obj.value);
     var weekending = new Date(document.getElementById('txtWE').value);

     if (!(isDate(startdate)))
   {
        obj.style.backgroundColor="red";
        alert (obj.value + " is not a valid date!");
        obj.value="";
        return;
   }

     if (enddate < startdate)
      {
      obj.style.backgroundColor="red";
      alert ("End date: " + enddate + " cannot be less then start date: " + startdate);
      obj.value="";
      }
     else if (enddate > weekending)
     {
      obj.style.backgroundColor="red";
      alert ("End date: " + enddate + " cannot be greater then week ending date: " + weekending);
      obj.value="";
     }
      else
      {
      obj.style.backgroundColor="";
      }      
    }
Run Code Online (Sandbox Code Playgroud)

107行是它说的行

var weekending = new Date(document.getElementById('txtWE').value);
Run Code Online (Sandbox Code Playgroud)

为什么这样抱怨?我没有发现任何问题...

Dav*_*tka 5

通常,错误会告诉您确切的错误和位置。就是这种情况。

我们可以判断出什么没错。

  1. 首先,我们知道我们有,document因为如果没有的话,我们会遇到更大的问题,而且我们会早发现两行。刮一下。
  2. 接下来,我们知道传递给Date构造函数的值无关紧要。new Date("foo")不会抛出任何错误,它只会Date在收到警报报告时创建一个"Invalid Date"。甚至new Date(null)还可以。
  3. 分配不能抛出此异常。

这使我们几乎没有机会结账。正如其他人所建议的,document.getElementById('txtWE')一定不要返回您期望的对象。知道这一点,请参阅此jsfiddle。如果我将id =“ txtWE”的输入“破坏”为其他任何ID,则会收到您的错误消息。

您确定txtWE在吗?