Как подсчитать и удалить лишние блоки, между блоками?

Как оставить только 3 таких блока <div class="done">Done</div>?

Если больше трех, то оставить первых 3, остальные удалить

Если меньше 3 или нет ни одного, то добавить, чтобы было 3 таких блока, между блоками start и stop

function done(item = 3) {
 // ...
}

done(3); // в параметре регулируется количество блоков done
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="start">Start</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="stop">Stop</div>


Ответы (1 шт):

Автор решения: Алексей Шиманский

function done(item = 3) {
    let doneElementsCount = $('.done').length;
    
    if (doneElementsCount < item) {
        for (let i = 0; i < item - doneElementsCount; i++) {
            $('.start').after('<div class="done">Done</div>');
        }
        
        return;
    }
    
    if (doneElementsCount > item) {        
        for (let i = doneElementsCount; i > item - 1; i--) {        
            $('.done').eq(i).remove();
        }
        
        return;
    }
}

done(6);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="start">Start</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="done">Done</div>
<div class="stop">Stop</div>

→ Ссылка