Ну вы посмотрите как вы вообще вставляете. Вы используете elem.appendChild(icon)
А в свою очередь аппенд - вставка, т.е. ему без разницы что у родителя было до него, он просто вставит, а не заменит содержимое.
Проще всего сделать костыль, чтобы не морочиться:
Вставьте перед последней строчкой:
document.getElementById('icon').innerHTML = ''