Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS错误:应为对象_Javascript - Fatal编程技术网

Javascript JS错误:应为对象

Javascript JS错误:应为对象,javascript,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

我加载了一个在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="";
      }      
    }

这是为什么抱怨?我看不出有什么问题…

如果您的错误在IE中,您可以右键单击页面并查看源代码。然后,检查该页的第107行。它可能与“var weening…”代码不同。或者,如果它实际上是您发布的107代码,则可能无法从txtWE值创建日期。您是否以任何方式验证txtWE输入?

从问题的答案来看,错误为“需要对象”。这通常意味着您正试图访问某个为null的属性


但是,如果
document.getElementById('txtWE')
返回null,那么第107行可能会这样做。当您在控制台上仅运行该代码时,您是得到一个元素还是得到null?换句话说,请检查页面中是否有ID(而不是名称!)为
txtWE

的元素。通常,错误会准确地告诉您错误所在和位置。这里就是这样

我们可以在网上判断出什么是错的

  • 首先,我们知道我们有
    文档
    ,因为如果我们没有,我们会有更大的问题,而且我们会在前面找到两行。把它擦掉
  • 接下来,我们知道传递给日期构造函数的值并不重要
    newdate(“foo”)
    不会抛出错误,它只会创建一个
    Date
    ,当收到警报时,它会报告
    “无效日期”
    。甚至
    新日期(空)
    也可以
  • 分配无法引发此异常
  • 这让我们几乎没有什么可检查的了。正如其他人所建议的,
    document.getElementById('txtWE')
    不能返回您期望的对象。知道了这一点,看看这个。如果我用id=“txtWE”将输入“中断”为任何其他id,我将得到您的错误


    你确定txtWE在那里吗?

    我不相信错误报告使用了“某些JS错误”这一短语。它实际上说了什么?如果是IE,它没有比这更好…@David Dorward-@Rudie是对的,它没有显示太多其他内容..我尝试使用firebug,但它没有给我任何信息(因为我不知道如何使用它)。上面写着:用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;InfoPath.3;.NET4.0C;.NET4.0E;.NET CLR 1.4322)时间戳:Tue,2011年5月17日15:52:00 UTC消息:对象必需行:150字符:5代码:0 URI:消息:对象必需行:107字符:6代码:0是否还可以提供包含相关输入字段的HTML代码(txtWEtxtSD-我假定它们是输入字段)。我猜
    document.getElementById('txtWE').value
    失败了(可能是字段名输入错误或其他什么?),但如果没有看到HTML,我就无法确定。请尝试在var weekending上设置断点。。。行并检查输入值(以及document.getElementById是否返回任何内容)。
    var weekending = new Date(document.getElementById('txtWE').value);