2011-05-17 101 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的頁面中是否有元素。