2011-05-12 50 views
1

我在IE8上收到一條錯誤消息....所有其他瀏覽器似乎都沒問題......我將它縮小到了JavaScript的特定部分,但我無法找到解決方法。似乎是大於或小於標誌(我可能是錯的)。任何人都知道變通的辦法(書面符號,文字和GT的,也許另一種方式;不會做)在IE中驗證的問題

示例代碼:

var selectedDate = new Date(document.getElementById("ExpYear").value,document.getElementById("ExpMonth").value) 
var nextmonth = selectedDate.setMonth(selectedDate.getMonth()); 
var last_date_of_selected_date = new Date(nextmonth -1); 
var today = new Date(); 
today = new Date(today.getFullYear(), today.getMonth()); 

if (today > selectedDate) {<!--i think its the < sign--> 
    return false; 
} 
else { 
    return true; 
} 


window.onload = function() { 
    var a = document.getElementById("PaymentForm"); 
    a.onsubmit = function() { return Validate() }; 
} 
+1

錯誤消息說什麼? 「今天」有什麼價值? 'selectedDate'有什麼價值?不會'返回(今天> selectedDate)'更整齊,然後有一個大的if/else? – Quentin 2011-05-12 10:25:58

+0

@David Dorward:錯誤只是說105號線是預期')',這是if(今天> selectedDate)線。虐待添加整個功能。 – Hatzi 2011-05-12 10:28:18

+1

只是一面標記:你知道腳本塊中不允許HTML註釋,不是嗎?改用'//'或'/ * comment * /'。 – 2011-05-12 10:44:32

回答

1
var selectedDate = new Date (document.getElementById("ExpYear").value,document.getElementById("ExpMonth").value) 

我不知道這樣做是否解決您的問題,但至少有三個問題這行代碼:

  1. Date構造函數需要零個參數,一個參數包含以毫秒爲單位的時間戳或字符串(不鼓勵)三個參數分別包含年份,月份和日期編號(可能後跟四個包含小時,分鐘,秒,m illisecond)
  2. month參數在1月開始於0,因此您可能應該減少輸入值(除非您希望用戶輸入範圍爲0 - 11的數字)。
  3. 分號丟失;儘管JavaScript解釋器有一些稱爲自動分號插入的東西,但它可能會在每個地方使用分號編寫更好的代碼。

更新:在你的第二個代碼段,該消息有關anull或不是對象可能是因爲有一個與ID PaymentForm沒有元素,所以行試圖將事件處理程序附加到a將產生一個錯誤。

此外,您在右大括號後省略了分號(並且您可能忘記了return Validate();之後的右大括號分號)。

+0

感謝您的幫助......評論只是放在最後的功能,指出可能的概率,但我在我的xslt頁面上測試腳本...我現在把它放回到它自己的文件並且概率可能已經消失......我認爲我的問題在於頁面上的window.onload。 – Hatzi 2011-05-12 11:26:21

+0

@Hatzi:我們應該怎麼知道這是怎麼回事?你沒有向我們展示你的'window.onload'函數。 – 2011-05-12 11:30:56

+0

錯誤表示'null'爲空或不是對象;生病張貼在上面 – Hatzi 2011-05-12 11:34:16

0

我看到你錯過的selectedDate變量聲明分號。 Internet Explorer對分號非常挑剔。

var selectedDate = new Date (document.getElementById("ExpYear").value,document.getElementById("ExpMonth").value)