2011-05-17 97 views
1

我加载了一个内部页面,我在IE中开发,并在底部显示一些JS错误: 它说行107字符6.我看看JScript文件,它有这样的代码:JS错误:对象预计

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=""; 
     }  
    } 

线107是在那里说

var weekending = new Date(document.getElementById('txtWE').value); 

这是为什么抱怨行?我没有看到有什么不对...

+4

我不相信错误报告使用短语“一些JS错误”。它实际上说了什么? – Quentin 2011-05-17 15:49:42

+3

如果它是IE浏览器,它不会比这更好... – Rudie 2011-05-17 15:51:08

+0

@David Dorward - @Rudie是正确的,它不显示其他许多..我尝试使用萤火虫,但它不给我任何信息(因为我不知道如何使用它)。它说:用户代理: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.1.4322)时间戳:2011年5月17日星期二15:52:00 UTC消息:Object required行:150字符:5代码:0 URI :http://localhost/blah/include/JScript.js消息:需要的对象行:107字符:6代码:0 – oJM86o 2011-05-17 15:52:28

回答

2

很多时候,一个错误会告诉你到底发生了什么错误和在哪里。这里就是这种情况。

我们可以判断线上没有错。

  1. 首先,我们知道我们有document,因为如果我们没有,我们会遇到更大的问题,并且我们会发现前两行。抓住那个。
  2. 接下来,我们知道传递给Date构造函数的值并不重要。 new Date("foo")将不会产生错误,它只会创建一个Date,其中提醒报告"Invalid Date"。即使new Date(null)也没关系。
  3. 赋值不能抛出这个异常。

这让我们很少去看看。正如其他人所建议的,document.getElementById('txtWE')不得返回您期望的对象。知道这一点,看到这jsfiddle。如果我把id =“txtWE”的输入“打破”为任何其他ID,我会得到你的错误。

你确定txtWE在吗?

1

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

1

从这个问题上看,错误是'需要对象'。这通常意味着你试图访问一个null值的属性。

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