我加载了一个我在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="";
}
}
107行是
所在的行var weekending = new Date(document.getElementById('txtWE').value);
为什么抱怨?我没有看到它有什么问题......
答案 0 :(得分:5)
通常情况下,错误会告诉您确切的错误和位置。这就是这种情况。
我们可以告诉我们什么是错误的。
document
,因为如果我们没有,我们会遇到更大的问题,我们会先发现两行。抓一点。new Date("foo")
不会抛出任何错误,只会在收到报告Date
时创建"Invalid Date"
。即使new Date(null)
也可以。这让我们很难看出来。正如其他人所建议的那样,document.getElementById('txtWE')
一定不能返回你期望的对象。了解这一点,请参阅此jsfiddle。如果我将id =“txtWE”的输入“中断”为任何其他ID,我就会收到你的错误。
你确定txtWE在那里吗?
答案 1 :(得分:3)
如果您的错误在IE中,您可以右键单击页面和查看源。然后,检查该页面的第107行。它可能与“var weending ...”代码不同。或者,如果它实际上是您发布的107代码,则可能无法从txtWE值创建日期。你是否以任何方式验证了txtWE输入?
答案 2 :(得分:1)
从问题上的问题来看,错误是“需要对象”。这通常意味着您正在尝试访问属于null的属性。
如果document.getElementById('txtWE')
返回null,那么第107行可能会这样做。当你只运行该代码时,在控制台,你得到一个元素,或者你得到null?换句话说,请检查页面中是否有一个ID(不是名称!)为txtWE
的元素。