en el primero intento lo que te falla es que no estas indicando un elemento en particular de la lista de nodos. o sea, fijate en la siguiente linea.
Código:
while(lis.lenght > 1) lis.parentNode.removeChild(lis.parentNode.lastChild);
la lista de nodos en si no contiene referencia directa al elemento en particular, son sus indices los que representan el nodo.
del segundo intento tienes que tener cuidado porque for/in no solo hace referencia al indice, sino que tambien a las propiedades y metodos. de modo que cuando lee una propiedad o metodo, dentro de esta intenta buscar la propiedad parentNode el cual existe explicitamente para los nodos.