2012-10-08 3 views
1

J'ai créé une table dynamique et je veux accéder à l'un des objets créés dans un javascript. Par exemple: Comment puis-je adresser un bouton créé dynamiquement?Comment accéder aux objets créés dynamiquement en javascript?

<script type="text/javascript"> 
function myJavaScriptFunction() 
{ 
//How do I know here which button triggered the function? 
} 
</script> 

<table> 
<% for (var i=0; i<10; i++) { %> 
    <tr class="rowcell"> 
    <td class="datacell"> 
    <input type="button" id='<%="button-no-"+i%>' value="myButton" onclick="myJavaScriptFunction()"/> 
    </td> 
</tr> 
<% } %> 
</table> 

Nous vous remercions à l'avance /John

+0

Voulez-vous accéder à ce contenu dynamique créé en Javascript ou ASP? –

+0

comment créez-vous des contrôles dynamiques? Dans codebehind? Ou en javascript? –

+0

Je veux accéder au contenu créé dynamiquement en Javascript. – John

Répondre

1

Plan sur le paramètre à l'objet:

function myJavaScriptFunction(object) 
{ 
//How do I know here which button triggered the function? 
    var id = object.id; 
} 

Dans votre code HTML, vous aurez besoin de faire:

onclick="myJavaScriptFunction(this)" 

C'est le point où vous appelez la fonction, et vous passez le mot-clé this en tant qu'argument.

Le mot-clé this fait référence à l'élément HTML ayant effectué l'appel, quel que soit le bouton sur lequel vous avez cliqué. L'objet a l'attribut id que vous avez défini dans la fonction object.id. La valeur de l'attribut id est fondamentalement le champ "id" de l'étiquette d'entrée.

Mettre tous ensemble, vous obtenez:

<script type="text/javascript"> 
function myJavaScriptFunction(object) // You're defining the function as having a parameter that it accepts. In this case, it accepts an object. 
{ 
    alert(object.id); // Alert the object's id. 
    // Do what you want with object.id 
} 
</script> 

<table> 
<% for (var i=0; i<10; i++) { %> 
    <tr class="rowcell"> 
    <td class="datacell"> 
    <input type="button" id='<%="button-no-"+i%>' value="myButton" onclick="myJavaScriptFunction(this)"/> 
    </td> 
</tr> 
<% } %> 
</table> 
0

En javascript, comme celui-ci

var elem = document.getElementById("button-no-1"); 
+0

Oui, et vous auriez codé en dur tous les boutons dynamiques possibles, n'est-ce pas? – walther

+0

Vraiment, cela dépend –

+0

@walther, vous avez clairement manqué le point, qui était de montrer comment vous le feriez, ne pas fournir une solution complète. –

1

de passer l'élément de bouton en tant que paramètre à la fonction

<script type="text/javascript"> 
function myJavaScriptFunction(button) 
{ 
//button triggered the function 
} 
</script> 

<table> 
<% for (var i=0; i<10; i++) { %> 
    <tr class="rowcell"> 
    <td class="datacell"> 
    <input type="button" id='<%="button-no-"+i%>' value="myButton" onclick="myJavaScriptFunction(this)"/> 
    </td> 
</tr> 
<% } %> 
</table> 
0

Vous pouvez changer votre code comme suit:

<input type="button" id='<%="button-no-"+i%>' value="myButton" onclick="myJavaScriptFunction('<%="button-no-"+i%>')"/> 



<script type="text/javascript"> 
function myJavaScriptFunction(buttonId) 
{ 
//How do I know here which button triggered the function? 
} 
</script> 
0

Vous devriez savoir bouton id:

var button = document.getElementById("button-no-1"); 
+0

Oui, et vous auriez codé en dur tous les boutons dynamiques possibles, n'est-ce pas? – walther

1
<script type="text/javascript"> 
function myJavaScriptFunction(button) 
{ 
    alert($(button).attr('id')); // gets the id of the button that called the function 
} 
</script> 

<table> 
<% for (var i=0; i<10; i++) { %> 
    <tr class="rowcell"> 
    <td class="datacell"> 
    <input type="button" id='<%="button-no-"+i%>' value="myButton" onclick="myJavaScriptFunction(this)"/> 
    </td> 
</tr> 
<% } %> 
</table> 
+0

Fonctionne bien! Merci! – John

Questions connexes