document.getElementById('toc').firstChild.appendChild(document.createElement('span'));
var lib_toc_button = document.getElementById('toc').firstChild.lastChild;
Wieso erzeugst du erst ein Element, hängst es ein und suchst dann nochmal danach??
createElement gibt dir die Referenz auf das Elementobjekt zurück, wenn du die mal zwischenspeicherst, ersparst du dir das ganze Herumgesuche im DOM-Baum mit firstChild.lastChild... oder, noch schlimmer, getElementsByTagName.