J'ai une liste divissi qui ressemble à ceci: Je dois déterminer quelle div se situe au milieu de la liste, veuillez noter que le numéro de div est dynamique, dépend de l'utilisateur. saisir. Mon objectif final est de déterminer les divs des DIV situés à gauche et à droite de la "Div" Moyen Div "puis appliquent une classe dépend de sa position. p> Le résultat final devrait ressembler à ceci: P> var setMidClasses = function (elementList, beforeMid, atMid, afterMid) {
var i = 0,
hasMid = elementList.length % 2,
mid = Math.floor(elementList.length / 2);
while (i < mid) {
elementList[i].classList.add(beforeMid);
i += 1;
}
if (hasMid == 1) {
elementList[i].classList.add(atMid);
i += 1;
}
while (i < elementList.length) {
elementList[i].classList.add(afterMid);
i += 1;
}
};
setMidClasses(document.querySelectorAll(".item"),
"left", "middle", "right");
4 Réponses :
Dans le cas d'un nombre impair d'éléments, vous pouvez obtenir l'élément du milieu à l'aide de p> math.floor (éléments.longueur / 2) code>. À partir de là, vous pouvez utiliser prevall () code> et NEXTALLALL () code> Pour ajouter les classes aux éléments correspondants: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div> <!--the middle one-->
<div class="item">4</div>
<div class="item">5</div>
Mise à jour de la question avec votre code édité pour la manipulation des numéros même, veuillez vérifier si mon édition est correct
sans jQuery:
(Vous n'avez pas répondu à la manière de gérer les listes de numérotation numérotées. J'ai choisi d'omettre la classe centrale et de diviser en deux parties: avant et après Mid) P>
p>
<div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <!--the middle one--> <div class="item">4</div> <div class="item">5</div>
Mise à jour de la question avec votre code édité pour la manipulation des numéros même, veuillez vérifier si mon édition est correct
sans jQuery, vous pourriez aussi bien faire comme ça;
p>
<div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div>
Voici une version qui utilise Récursion em> avec .First () /. Dernier () Probablement pas très efficace et pourrait être fait avec une boucle, mais je voulais montrer une version avec récursivité . P> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
Que se passe-t-il si vous avez un nombre pair de
.Item code> s?