JavaScript getElementById pour le contrôle ASP.NET renvoie null?
J'utilise JavaScript et cette erreur s'affiche pour moi lors de l'exécution:
Microsoft JScript runtime error: 'document.getElementById(...)' is null or not an object
ce mon code:
<asp:Content ID="content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script language="javascript" type="text/javascript">
function ConfirmTransfere() {
if (confirm("Syatem not allow negative inventory, would you like to continue ?") == true) {
document.getElementById("btnAlelrt").click();
}
}
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="uxContainer" runat="server">
<ContentTemplate>
<table>
<tr>
<td>
<asp:Button ID="uxTransfer" runat="server" Text="Transfer" OnClick="uxTransfer_Click" />
<asp:Button ID="btnAlelrt" runat="server" Text="GetDetails" OnClick="btnAlelrt_Click" />
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="uxTransfer" />
</Triggers>
</asp:UpdatePanel>
</asp:Content>
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Ce:
doit être ceci:
Le problème est que le bouton est un ASP.Net de contrôle et de générer son propre numéro de client, qui sera différent de l'IDENTIFIANT que vous avez spécifié. mettre dans le code
<%=btnAlert.ClientID%>
affichera l'généré pour le navigateur.Vous pouvez utiliser ceci:
À partir de ASP.NET 4.0, vous pouvez utiliser ClientIDMode propriété pour vous l'élément. Et si vous le réglez en
Static
puis leClientID
valeur sera définie à la valeur de l'ID de propriété:sera rendu comme quelque chose comme ceci:
L'ID de vous donner l'asp:Button est le code qui est utilisé sur le serveur par ASP.Net. Ce n'est pas le code qui est utilisé par le script client.
Vous devez utiliser:
Si vous affichez la source sur votre page générée vous trouverez probablement que le bouton n'a plus l'ID "btnAlelrt". Il pourrait avoir quelque chose comme "ctl001_btnAlert", ou certains autres généré caractère unique d'identification.
C'est pourquoi, le javascript n'est pas à la trouver.
Vous aurez besoin soit de la recherche par tag, et de vérifier les Identifiants pour voir si ils finissent dans btnAlelrt, ou vous devrez placer une DIV ou SPAN autour d'elle avec un ID qui ne sera pas changé (c'est à dire ne pas avoir runat="server"). Vous pouvez alors constater que l'élément par son ID, puis le bouton à l'intérieur.
Si vous le pouvez, vous pouvez utiliser le <%=btnAlelrt.ClientID%> syntaxe pour insérer le bon ID dans votre javascript.
(NOTE:c'était censé être btnAlert?)
Je ne peux pas trouver un exemple de code pour poster pour vous à ce moment, mais je peux vous expliquer le problème de votre avoir.
ASP.NET ne pas utiliser l'ID de vous donner un objet /élément /touche lorsqu'il écrit à la page, à la place qu'il donne l'objet d'un numéro de client.
Si vous ne Msgbox(btnAlelrt.clientID) dans votre code, puis vous verrez le nom de l'objet de votre javascript doit utiliser.
Il est préférable d'avoir l' .NET code d'écrire ces valeurs, en javascript, à la page, car ils ne sont pas une constante.
Espère que cette aide.
James
Si vous regardez la page rendue le contrôle appelé btnAlelrt n'a plus que le nom...
Si vous ajoutez "<%=" vous êtes alors en mesure d'accéder à la C# nom d'un contrôle, et cela devrait fonctionner.
essayez d'utiliser ClientIDMode="Statique". cela permettra de ne pas changer le bouton id lors de l'exécution.
Ensuite, vous pouvez utiliser en dessous de jquery pour accéder à votre bouton. J'espère que cette aide.