Pergunta

Parece que todo mundo está fazendo isso (em mensagens de código etc.) ... mas eu não' saber como: (

Sempre que eu tento manipular um elemento asp usando javascript eu recebo um "elemento é nulo" ou "documento é indefinido" etc. erro .....

javascript funciona bem normalmente, ... mas só quando eu adiciono o atributo runat = "server" que o elemento parecem invisíveis ao meu javascript.

Todas as sugestões serão apreciadas

Obrigado, Andrew

Foi útil?

Solução

O que está provavelmente acontecendo é que o seu elemento / controle está dentro de um ou mais controles ASP.NET que atuam como nomear recipientes (Página Mestre, ITemplate, Wizard, etc), e que está causando a sua ID à mudança.

Você pode usar "view source" no seu browser para confirmar que é o que está acontecendo no HTML renderizado.

Se o seu JavaScript está na página ASPX, a maneira mais fácil de funcionar temporariamente em torno de que é usar do elemento de propriedade ClientID . Por exemplo, se você tivesse um controle chamado TextBox1 que você queria referência via JS:

var textbox = document.getElementById('<%= TextBox1.ClientID %>');

Outras dicas

Fazendo um elemento runat="server" muda o ID do lado do cliente desse elemento com base no que ASP.NET nomear recipientes é dentro de. Então, se você estiver usando document.getElementById para manipular o elemento, você precisa passá-lo o novo ID gerado pelo .NET. Olhe para a ClientId propriedade para obter esse ID gerado ... você pode usá-lo em linha em sua Javascript assim:

var element = document.getElementById('<%=myControl.ClientID%>');

Se você tem uma caixa de texto:

<asp:TextBox id="txtText" runat="server" />

Você pode usar:

var textBox=document.getElementById('<%=txtText.ClientID %>');

Qualquer WebControl expõe a mesma propriedade ClientID.

Tudo bem que a pergunta foi respondida, pensei que seria apenas postar algumas Mais informações ...

Rick Strahl forneceu um trabalho bastante intresting volta a este problema.

http://www.west-wind.com/WebLog/posts /252178.aspx

Felizmente quando ASP .NET 4.0 chega, ele irá permitir que você especifique exacly o que o ID do cliente será!

http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top