JavaScript pour ajouter des lignes de table événement onclick

Je suis nouveau sur le Javascript. Je veux ajouter un événement onclick de lignes de la table. Je ne suis pas à l'aide de JQuery.

Je boucle à travers les lignes et utiliser une fermeture pour m'assurer d'avoir l'état de la fonction externe pour chaque ligne.
La boucle fonctionne. L'utilisation d'alertes, je vois la fonction attribuée à chaque itération. Mais quand je clique sur la ligne, aucune alerte ne s'affiche.
Ci-dessous est le code HTML et le code qui peut être chargé.

Pourquoi la ligne de la table des événements à ne pas travailler?

<!doctype html>
<html lang="en">
<body>
<script>
function example4() {
    var table = document.getElementById("tableid4");
    var rows = table.getElementsByTagName("tr");
    for (var i = 0; i < rows.length; i++) {
        var curRow = table.rows[i];
        //get cell data from first col of row
        var cell = curRow.getElementsByTagName("td")[0];
        curRow.onclick = function() {
            return function() {
                alert("row " + i + " data="+ cell.innerHTML);
            };
        };
    }
}
function init() { example4(); }
window.onload = init;   
</script>
<div>
Use loop to assign onclick handler for each table row in DOM. Uses Closure.
    <table id="tableid4" border=1>
      <tbody>
        <tr><td>Item one</td></tr>
        <tr><td>Item two</td></tr>
        <tr><td>Item three</td></tr>
      </tbody>
    </table>
</div>
</body>
</html>
  • Vous êtes de retour d'une fonction dans une fonction. Cela nécessiterait pour une autre fonction au sein de la onclick pour appeler la fonction renvoyée.
  • Cette question n'a vraiment rien à voir avec les fermetures.
  • Je suis, en utilisant les fermetures, car je veux le cas de retour de la ligne qui a été cliqué. Sur une version antérieure du code, j'ai continué à obtenir de la ligne 3 toujours retourné. Ma compréhension est que la fermeture permettra de résoudre ce problème.
  • Vous comprenez correctement
InformationsquelleAutor Alex_B | 2012-12-26