2010-12-16 261 views
0

Je suis creatind 20 dynamique div, sur la page de chargement attachant l'événement onclick à chaque div pour alerter son ID, mais le problème est de cliquer sur un div seulement dernier ID div est alerté plz aide.JavaScript Aide requis pour obtenir les valeurs dynamiques de onclick

Par exemple, en cliquant sur fist div est en alerte dernière div id.

Le résultat requis est onclick sur un div devrait alerter son propre id.

Le code complet est indiqué ci-dessous.

Merci d'avance.

<html> 
<head> 
<script> 
function __createElement(tag, cls, id, name) 
{ 
var ele; 
ele = document.createElement(tag); 
if(cls!="" && cls!=undefined) 
    ele.className = cls; 
if(id != "" && id!=undefined) 
    ele.id = id; 
if(name!= "" && name!=undefined) 
    ele.name = name; 
return ele; 
} 
function test() 
{ 
for(var i = 0;i<20;i++) 
{ 
    var div = __createElement("div" ,"test" ,i+"test"); 
    document.getElementById("cont").appendChild(div); 
    div.innerHTML = "Content"+i; 
    div.onclick = function() 
    { 
    alert(i+"test"); 
    } 
} 
} 
setTimeout("test()",1000); 
</script> 
</head> 
<body> 
<div id=cont > 
</div> 
</body> 
</html> 

Répondre

2

ce un problème de fermeture variable, on utilise plutôt:

div.onclick = function (num) 
    { 
    return function(){ 
     alert(num+"test"); 
    }; 
    }(i); 
+0

.. ça marche ... J'ai aussi trouvé une solution div.onclick = function() { \t \t \t \t \t alerte (this.id); \t \t} – druveen

+0

Merci merci ... vous avez sauvé ma journée .......... – druveen

+0

@druveen yourwelcome. –

0

J'ai rencontré ce problème une fois. Rappelez-vous juste: la valeur de i est maintenant 20 sur toute la portée de la fonction test(). Mais, la valeur innerHTML de chaque div est maintenant définie comme vous l'attendez. Donc utilisez cette référence de valeur innerHTML à la place.

+0

Mais je rechercherai l'id de div cliqué, est-il possible de l'obtenir .... – druveen

+0

@druveen: référencement 'id' que vous avez dit dans votre commentaire à la réponse de Scrum Meister le ferait. 'alert (i)' donne la valeur courante de 'i', qui est' 20' à la fin de votre boucle 'for'. Mais les attributs d'élément, tant qu'ils ne sont pas une fonction anon, sont déjà définis de manière rigide. Merci –