Javascript JS错误:应为对象
我加载了一个在IE中开发的内部页面,在底部显示了一些JS错误: 上面写着第107行第6个字符。我查看JScript文件,它有以下代码: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
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代码(
txtWE
和txtSD
-我假定它们是输入字段)。我猜document.getElementById('txtWE').value
失败了(可能是字段名输入错误或其他什么?),但如果没有看到HTML,我就无法确定。请尝试在var weekending上设置断点。。。行并检查输入值(以及document.getElementById是否返回任何内容)。
var weekending = new Date(document.getElementById('txtWE').value);