2011-09-11 7 views
1

iframeでホストされているカレンダーコントロールがあります。私はカレンダーの日付をクリックするとjavascriptエラーが発生します。 window.top.document.getElementById(..)IFRAMEが別のページ上でホストされているオブジェクトasp.netのJavaScriptエラー

ヌルであるかどうか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

"同じドメイン"を意味するものが不明ですか?同じWebアプリケーション内にあります。 – 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.top"の代わりに "window.parent"に変更し、それが役立つかどうか確認してみてください。

+0

しかし、すべてのコントロールがページに存在するので、何も見つからない理由はわかりません。コードがどのように表示されるべきかのサンプルを提供できますか? – DotNetRookie

+0

私の答えを更新します。 – Pointy

+0

回答をお寄せいただきありがとうございますが、エラーの原因を教えてくれません。 – DotNetRookie