2010-06-11 10 views
4

Je dois boucler sur ma matrice et définir toutes les vars à false ou true. J'ai essayé de nombreuses options, dont aucun ne travaillent et il est clairement mon manque de javascript syntaxe knowledge..Please jeter un oeil à ceci:Boucle sur tableau et définir toutes les vars à false ou true en javascript

var closeAllCells = [IncomeOpen = "false", 
        RehabOpen = "false", 
        AttendantCareOpen = "false", 
        HomeMaintenanceOpen = "false", 
        DependantCareOpen = "false", 
        IndexationOpen = "false", 
        DeathFuneralOpen = "false", 
        ComprehensiveOpen = "false", 
        CollisionOpen = "false", 
        LiabilityOpen = "false", 
        DCPDOpen = "false"]; 

Donc, ma pensée est que je peux boucler sur cela comme suit

for (var i=0;i<closeAllCells.length;i++) 
{ 
    closeAllCells[i] = true; // or false if I wished 
} 

Répondre

2

Dans votre exemple, vous créez un tableau qui contient les valeurs attribuées à un groupe de variables globales, les regards du tableau comme ceci:

[false, false, false, false, false, false, ...].

Vous êtes à la recherche d'utiliser un object literal pour stocker vos valeurs en tant que propriétés d'un objet, par exemple:

var data = { 
    IncomeOpen : false, 
    RehabOpen : false, 
    AttendantCareOpen : false, 
    HomeMaintenanceOpen : false, 
    DependantCareOpen : false, 
    IndexationOpen : false, 
    DeathFuneralOpen : false, 
    ComprehensiveOpen : false, 
    CollisionOpen : false, 
    LiabilityOpen : false, 
    DCPDOpen : false 
}; 

for (var prop in data) { 
    if (data.hasOwnProperty(prop)) { 
    data[prop] = true; 
    } 
} 

Comme vous pouvez le voir, nous utilisons une ici boucle for...in, le but de cette déclaration est de énumère propriétés de l'objet.

Vous pouvez accéder aux propriétés individuelles aussi comme ceci:

alert(data.IncomeOpen); // true, or 
alert(data["RehabOpen"]); // true 

Vous pouvez vous demander pourquoi nous avons besoin d'appeler la méthode hasOwnProperty, bien que ce à faire en sorte que seules les propriétés propres (propriétés qui existent physiquement sur l'objet, ceux que nous avons définis) sont énumérés, pas une propriété héritée.

Voir aussi:

+0

Merci CMS, cela a bien fonctionné! –

-2

Rookie erreur, je pense que c'est l'attribution de chaîne qui m'a piqué! Devrait être:

var closeAllCells = [IncomeOpen = false, 
        RehabOpen = false, 
        AttendantCareOpen = false, 
        HomeMaintenanceOpen = false, 
        DependantCareOpen = false, 
        IndexationOpen = false, 
        DeathFuneralOpen = false, 
        ComprehensiveOpen = false, 
        CollisionOpen = false, 
        LiabilityOpen = false, 
        DCPDOpen = false]; 

Je pense?

+0

Hmmm, toujours pas correct. Si je trace la variable IncomeOpen var, je ne peux pas la référencer, comme ceci: alert (closeAllCells [i]); –

0

Vous définissez votre tableau comme un objet kinda? il est une notation intéressante, lol ..

Vos indices ne sont pas entre guillemets ou apostrophes et faux devrait être par lui-même (pas entre guillemets)

var closeAllCels = new Array(); 
closeAllCells['IncomeOpen'] = false; 
closeAllCells['RehabOpen'] = false; 

peut-être vous songeaient d'un objet?

var closeAllCells = { IncomeOpen : false, 
         RehabOpen = false 
        }; 

comme déjà indiqué par CMS, un objet serait une excellente option pour ya

+0

Merci Dan, j'ai réussi à me débrouiller avec l'option CMS qui ressemble à votre exemple d'objet! –

0

votre tableau est en fait un tableau associatif, ou hachage.et la syntaxe correcte pour déclarer qu'il est:

var closeAllCells = { 
    IncomeOpen: false, 
    RehabOpen: false 
}; 

vous pouvez itérer sur chaque propriété dans votre objet:

for (var property in closeAllCells) { 
    closeAllCells[property] = false; 
} 
0

une fois que vous avez défini que le contenu du tableau va tenir un particulier type de valeur que vous pouvez passer en boucle pour changer la valeur, mais jusqu'à ce que vous définissiez le type de contenu d'un tableau, vous ne pouvez pas le boucler.