Spot the bug - #127: Spell Shelf List

Why does my spell shelf only clear half the charms?

function purgeDarkSpells(shelfElement) {
  const charms = shelfElement.getElementsByClassName("cursed");
  
  for (let i = 0; i < charms.length; i++) {
    const item = charms[i];
    if (item.dataset.dangerLevel > 3) {
      shelfElement.removeChild(item);
    }
  }
  
  const remaining = shelfElement.querySelectorAll(".cursed").length;
  return `Purge complete! ${remaining} mild curses remain.`;
}

Reply with what is broken and how you would fix it.