2011-09-11 61 views
1

我有一個託管在iframe上的日曆控件。當我點擊日曆上的日期時,出現javascript錯誤。 window.top.document.getElementById(..)爲空或不是一個對象asp.net中的Javascript錯誤

iframe的託管另一頁上ConfigSettings.aspx

在後面的日曆控制代碼的代碼是:

Dim sjscript As String = "<script language=""javascript"" type=""text/javascript"">" 
sjscript &= "window.top.document.getElementById('" & HttpContext.Current.Request.QueryString("DateTextID") & "').value = '" & Calendar1.SelectedDate & "';" 
sjscript &= "window.top.document.getElementById('" & HttpContext.Current.Request.QueryString("DateTextID") & "1').style.display = 'none';" 
sjscript = sjscript & "</script" & ">" 
Literal1.Text = sjscript 

的HTML代碼是:

<input type="text" class="TextBox" id="ToDate" runat="server"/> 
    <a href="javascript:ShowCalendar('ToDate1')"><img src="images/Calendar.jpg" border="0" /></a> 
        <iframe src="Calendar.aspx?DateTextID=ToDate" style="display:none; width:200px; height:100px" name="ToDate1" id="ToDate1"></iframe> 
<asp:Label runat="server" ID="lblEndTime" Text="End Time:"></asp:Label> 

會是什麼引起的錯誤?

+0

iframe是否與頂級框架位於同一個域中? – lonesomeday

+0

不確定你的意思是「相同的域名」?它位於相同的網絡應用程序 – DotNetRookie

+0

iframe的URL是否具有相同的域 - 例如'http:// www.example.com' - 作爲頂級窗口? – lonesomeday

回答

1

你打電話給「getElementById()」,但不檢查它是否真的找到任何東西。換句話說,如果首頁上沒有元素具有您要查找的「id」值,則該函數的返回值將爲null。然而,你的代碼並不檢查這種可能性。

編輯 —檢查null,我會做這樣的事情:

var dateText = window.top.document.getElementById(... whatever ...); 
if (dateText !== null) 
    dateText.value = ... whatever ... ; 
else 
    alert("cannot find date element"); 

另一種可能性是,「window.top」是不是真的在右邊的窗口。如果涉及另一層,則「window.top」將跳過您發佈的代碼中的父級。你可以嘗試改變它爲「window.parent」而不是「window.top」,看看是否有幫助。

+0

但是所有的控件都存在於頁面上,所以我不知道爲什麼它找不到任何東西。你能提供一個代碼應該是什麼樣子的例子嗎? – DotNetRookie

+0

我會更新我的答案。 – Pointy

+0

感謝您更新您的答案,但它不會告訴我是什麼原因導致了錯誤。 – DotNetRookie