J'ai créé une table dynamique en utilisant Javascript. Maintenant, ce que j'essaye de faire est pour chaque cellule qui est générée dynamiquement, il y a un événement onmouseover qui changerait la backgroundColor de cette cellule particulière. Le problème que j'ai est que quand je génère la table et essaie d'avoir une fonction onmouseover avec chaque cellule générée dynamiquement la fonction ne fonctionne que pour la dernière cellule générée.Javascript Table dynamique avec chaque cellule ayant un événement onmouse?
Voici une copie de mon code. (Note: Je n'ai testé sur Chrome)
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style>
\t table, th, td {
\t \t border: 1px solid black;
\t \t border-collapse: collapse;
\t \t padding: 5px;
\t \t text-align: center;
\t }
</style>
<script type="text/javascript">
\t var table;
\t
\t function init(){
\t \t table = document.getElementById("mytable");
\t }
\t
\t function makeCells(){
\t \t init();
\t \t \t \t
\t \t for(var a=0;a<20;a++){
\t \t \t var row = table.insertRow(-1);
\t \t \t
\t \t \t for(var b=0;b<20;b++){
\t \t \t \t cell = row.insertCell(-1);
\t \t \t \t cell.innerHTML = a*b;
\t \t \t \t cell.onmouseover = function(){cell.style.backgroundColor = "yellow";};
\t \t \t }
\t \t }
\t }
</script>
</head>
<body onload="javascript: makeCells();">
\t <table id="mytable"></table>
</body>
</html>
Tout conseil serait grandement apprécié.
http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example –
Votre problème est que 'cell' se rapporte toujours la dernière cellule. C'est un problème général de "fermeture". –