un paio di cose da notare:
tagName restituisce il nome del tag in maiuscolo, quindi devi cercare "DIV",
oppure, secondo logica, valutare il lowerCase del tagName e qui troverai un intoppo che ti mostra perche' mi preoccupo prima di tutto del nodeType

while(el.tagName.toLowerCase() !== "div");

secondo il DOM standard spazi bianchi, tab, carriage return... sono nodi di testo, vuoti
e quanto sopra generera' errori, perche' il lowerCase di un undefined genera un errore,
che non ti aspetteresti

lo so che sto estremizzando la situazione ma, in contesti leggermente piu' complessi, occorre prestarvi attenzione
ciao