Comment puis-je accéder à runat = « server » élément ASP en utilisant javascript?
-
21-08-2019 - |
Question
Il semble que tout le monde fait cela (dans les postes de code, etc.) ... mais je ne sais comment »: (
chaque fois que je tente de manipuler un élément asp en utilisant javascript je reçois un « élément est nul » ou « document non défini », etc. erreur .....
javascript fonctionne bien en général, ... mais seulement quand j'ajouter l'attribut runat = « server » ne semble l'élément invisible à mon javascript.
suggestions seraient appréciés
Merci, Andrew
La solution
Qu'est-ce qui se passe probablement est que votre élément / commande est dans une ou plusieurs contrôles ASP.NET qui agissent comme des conteneurs de nommage (page principale, ITemplate, Assistant, etc.), et qui est la cause de son ID de changer.
Vous pouvez utiliser « voir la source » dans votre navigateur pour confirmer que est ce qui se passe dans le code HTML rendu.
Si votre JavaScript est dans la page ASPX, la meilleure façon de travailler temporairement qui est utiliser la propriété de l'élément ClientID . Par exemple, si vous aviez un contrôle nommé TextBox1 que vous vouliez faire référence via JS:
var textbox = document.getElementById('<%= TextBox1.ClientID %>');
Autres conseils
Faire un élément modifie l'ID runat="server"
côté client de cet élément en fonction de ce que les conteneurs de nommage ASP.NET il est intérieur. Donc, si vous utilisez pour manipuler l'document.getElementById
élément, vous aurez besoin de passer le nouvel ID généré par .NET. Regardez dans le propriété de ClientId pour obtenir cet ID généré ... vous pouvez l'utiliser en ligne dans votre Javascript comme ceci:
var element = document.getElementById('<%=myControl.ClientID%>');
Si vous avez une zone de texte:
<asp:TextBox id="txtText" runat="server" />
Vous pouvez utiliser:
var textBox=document.getElementById('<%=txtText.ClientID %>');
Tout WebControl expose la même propriété ClientID.
Tous si la question a été répondu, je pensais tout simplement poster des informations plus loin ...
Rick Strahl a fourni tout à fait un travail intresting autour de ce problème.
http://www.west-wind.com/WebLog/posts /252178.aspx
Heureusement quand ASP .NET 4.0 arrive, il vous permettra de spécifier exacly ce que le client ID de seront!
http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx