Bonjour,
Je me trouve face un petit soucis dans une boucle.
Je genere des liste grace a une boucle en PHP
et j'ai une classe "pull-left"
sauf que je doit faire en sorte que une fois il y a une li avec la class "pull-left" et une seconde fois une class "pull-right"
J'ai reflechi comment je peux faire cela en JS mais je ne trouve pas une solution "convenable" à ce genre de besoin.
Si quelqu'un a une idee :)
Je vous remercie d'avance.
Salut,
Il faut regarder du côté des temporisations (setTimeout() et setInterval()):
var elems = document.querySelectorAll('.pull-left');
setTimeout(function() { // Le callback sera exécuté après 1000ms, soit 1s
Array.prototype.forEach.call(elems, function(elem) {
elem.classList.remove('pull-left');
elem.classList.add('pull-right');
});
}, 1000);
Salut betaWeb,
Merci pour ta reponse rapide.
J'ai essayer de cete facon mais le resultat n'est pas "parfait"
normalement des que je load la page j'obtient:
<li class ="pull-right">...</li>```
ainsi de suite.
var elems = document.querySelectorAll('.pull-left');
var change = false;
Array.ptototype.forEach.call(elems, function(elem) {
if(change){
elem.classList.remove('pull-left');
elem.classList.add('pull-right');
}
change = !change;
});
Si j'ai bien compris ce que tu voulais..
Ceci devrait fonctionner, si on part du principe que tous tes éléments ont la classe 'pull-left' au chargement de la page.
var elems = document.querySelectorAll('.pull-left');
Array.prototype.forEach.call(elems, function(elem, index) {
if (0 != index % 2) {
elem.classList.remove('pull-left');
elem.classList.add('pull-right');
}
});
@betaWeb, on peut simplifier ton code :
var elems = document.querySelectorAll('.pull-left');
elems.forEach(function(elem, index) {
if (0 != index % 2) {
elem.classList.remove('pull-left');
elem.classList.add('pull-right');
}
});
@prbaron Je le sais mais c'est pour une question de compatibilité cross-browsers que je passe par le prototype ;)