2009-02-13 5 views
0

Je n'arrive pas à trouver la réponse à cela n'importe où ... J'ai une fonction qui doit définir la couleur bg de deux tables. Seule la première table de la fonction est affectée. Est-ce qu'une seule boucle autorisée dans une fonction? ... ou est-ce que la 1ère boucle peut ne jamais sortir?Fonction Javascript: rien ne s'exécute après une boucle for (x in y)?

Je peux à peu près contourner ce problème en créant plusieurs fonctions, mais je veux vraiment comprendre pourquoi cela se comporte comme ça!

Merci!

Voici mon code simplifié:

function setColor() 
{ 
    //This works 
    var t1rows=document.getElementById("table1").getElementsByTagName("tr"); 
    var x; 
    for (x in t1rows) 
    { 
    t1rows[x].style.backgroundColor='yellow'; 
    } 

    //this one does not work 
    var t2rows=document.getElementById("table2").getElementsByTagName("tr"); 
    var y; 
    for (y in t2rows) 
    { 
    t2rows[y].style.backgroundColor='yellow'; 
    } 
} 

Répondre

3

getElementsByTagName() returns a NodeList object , and for-in va itérer ses propriétés que vous ne voulez pas. Vous souhaitez utiliser une boucle for droite:

for(var i=0; i < t2rows.length; i++) { 
    t2rows[i].style.backgroundColor='yellow'; 
} 

Vous n'êtes pas arriver à la deuxième boucle, car la première n'est en voie quand il tente d'accéder à une propriété inexistante style sur l'un des membres du NodeList.

+0

OK, c'est logique. J'ai essayé d'utiliser directement les boucles et cela fonctionne maintenant. Merci! –

Questions connexes