2011-05-30 2 views
0

Je veux obtenir clientId dynamiquement en fonction lors de l'itération par exemple, numérationComment obtenir des contrôles en fonction du nombre d'itérations?

var clientID = "<%=NumericTextBox" + 1 + ".ClientID %>"; 
var id = document.getElementById(clientID); 

mais si je tente d'utiliser au-dessus de déclarations pour obtenir le contrôle, il jette «attendu », «) exppected » erreurs quelle est la bonne façon d'obtenir le contrôle?

+0

quelle ligne est l'erreur lancée? Dit-il quel personnage? cela compile bien dans un navigateur web – ninjagecko

+1

Avez-vous vraiment un élément HTML avec la valeur d'id '' <% = NumericTextBox1.ClientID%> '? Cela ressemble à une tentative d'utiliser un langage de modèle et le mélanger avec JavaScript ou quelque chose? J'ai l'impression qu'il se passe plus de choses ici que vous ne l'avez expliqué. – Chuck

+0

Pouvons-nous supposer que vous utilisez MVC et .NET, ou quelle langue évalue les sections <% %>? –

Répondre

2

Je pense que vous avez le contrôle de zone de texte numérique dans asp.net. Si vous avez besoin pour obtenir l'identifiant de celui-ci, vous pouvez utiliser

var clientId = '<%= NumericTextBox.ClientId %>'; 
var txt = document.getElementById(clientId); 

Si la zone de texte est à l'intérieur d'un contrôle de la grille, vous ajoutez généralement le numéro à la fin ou au début comme celui-ci

var clientId = 'ctl_0' + i + '<%= NumericTextBox.ClientId %>' 

Vous pouvez vérifier l'ID que le framework affiche en accédant à la source.

1

Je ne sais pas quel langage côté serveur et quel moteur de template vous utilisez, mais je pense que vous l'utilisez incorrectement et c'est ce qui donne l'erreur. Dans la plupart des langues, ce analysera comme directive templating côté serveur qui exécute le code suivant:

NumericTextBox " + 1 + " .ClientID 

Ce qui est un non-sens dans la plupart des langues et ressemble à une erreur dans une langue que je connais. (Il est en fait peut-être valide Ruby, mais probablement pas corriger Ruby comme les chaînes ne sont pas normalement une méthode ClientID.)

0
var clientID = '<%=FindControl("NumericTextBox" + "1").ClientID%>'; 
var id = document.getElementById(clientID); 
+0

merci pour votre réponse mais il jette une erreur sur la fenêtre de navigateur La collection de contrôles ne peut pas être modifiée parce que le contrôle contient des blocs de code (par exemple <% ... %>). – Tuscan

+0

Essayez de réorganiser votre code pour éviter cela, par ex. construire une chaîne avec vos variables, puis écrire au client – Rodrigo

Questions connexes