web-dev-qa-db-fra.com

javascript / jQuery - Pour boucle

J'ai une réponse à une requête ajax que j'utilise ensuite pour définir les variables du tableau. Existe-t-il de toute façon d'utiliser une boucle For pour passer à #nom afin que je n'ai pas à écrire une ligne de code pour définir chaque élément du tableau.

array[0]=$('#event00',response).html();
array[1]=$('#event01',response).html();
array[2]=$('#event02',response).html();
array[3]=$('#event03',response).html();

Ainsi, "# event00" pourrait être utilisé dans une boucle for pour passer à "# event01", etc.

17
user1216855

Utilisez une boucle for régulière et formatez l'index à utiliser dans le sélecteur.

var array = [];
for (var i = 0; i < 4; i++) {
    var selector = '' + i;
    if (selector.length == 1)
        selector = '0' + selector;
    selector = '#event' + selector;
    array.Push($(selector, response).html());
}
39
Greg

Et quelque chose comme ça?

var arr = [];

$('[id^=event]', response).each(function(){
    arr.Push($(this).html());
});

Le [attr^=selector] le sélecteur correspond aux éléments sur lesquels l'attribut attr commence par la chaîne donnée, de cette façon vous ne vous souciez pas des nombres après "événement".

8
julioolvr

.each() devrait fonctionner pour vous. http://api.jquery.com/jQuery.each/ ou http://api.jquery.com/each/ ou vous pouvez utiliser .map.

var newArray = $(array).map(function(i) {
    return $('#event' + i, response).html();
});

Edit: j'ai supprimé l'ajout du 0 ajouté car il est suggéré de ne pas l'utiliser.

Si vous devez l'avoir, utilisez

var newArray = $(array).map(function(i) {
    var number = '' + i;
    if (number.length == 1) {
        number = '0' + number;
    }   
    return $('#event' + number, response).html();
});
2
Bot