2011-09-08 12 views
6

Recibo un error de Javascript cuando intento hacer clic en el control de mi calendario.Error de Javascript: 'window.top.document.getElementById (...)' es nulo o no es un objeto

El código HTML es:

 <td align="left" style="width:50%;"><asp:Label runat="server" CssClass="TextFontBold" ID="lblStartDate" Text="Start Date:"></asp:Label> 
      <input type="text" class="TextBox" id="FromDate" runat="server"/><a href="javascript:ShowCalendar('FromDate1')"><img src="images/Calendar.png" border="0" /></a> 
      <iframe src="Calendar.aspx?DateTextID=FromDate" style="display:none; top: 0px; left: 0px; width:245px; height:164px" frameborder="0" scrolling="no" name="FromDate1" id="FromDate1"></iframe>&nbsp;&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp;&nbsp;<asp:Label runat="server" CssClass="TextFontBold" ID="lblPromoStartTime" Text="Start Time:"></asp:Label> 
     </td> 

Cuando hago clic en una fecha en el control de calendario, este código se ejecuta en el código subyacente:

Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged 
    Dim strjscript As String = "<script language=""javascript"" type=""text/javascript"">" 
    strjscript &= "window.top.document.getElementById('" & HttpContext.Current.Request.QueryString("DateTextID") & "').value = '" & Calendar1.SelectedDate & "';" 
    strjscript &= "window.top.document.getElementById('" & HttpContext.Current.Request.QueryString("DateTextID") & "1').style.display = 'none';" 
    strjscript = strjscript & "</script" & ">" 
    Literal1.Text = strjscript 
End Sub 

El error Soy consiguiendo es 'window.top.document.getElementById (...)' es nulo o no es un objeto

I tener un objeto llamado FromDate.
¿Qué más podría estar causando este error?

+0

Es el código que se ejecuta desde el interior del marco flotante, o la página de alojamiento? –

+0

El código subyacente está en el iframe. El html está en la página de alojamiento – Csharp

+0

¿Pudo resolver este problema? – Troy

Respuesta

6

Trate window.parent.document.getElementById() en lugar de window.top.document.getElementById()

+1

¿Por qué window.parent funciona cuando window.top no funciona? –

2

¿Has probado parent.document.getElementById(...)? Es sólo una idea ...

editada como sugerido por pimvdb

+0

error similar ..... document.parent es nulo o no es un objeto – Csharp

+0

'parent' no es una propiedad de' document', sino de 'window'. Además, devuelve una ventana, por lo que debe leer 'parent.document.getElementById'. – pimvdb

+0

sí, gracias, obviamente lo escribí al revés. Corregido como segundo. –

Cuestiones relacionadas