Du har gjort ett par grundläggande fel, förmodligen baserat på ett missförstånd av createElement och createTextNode.
Det förtnämnda är till för att skapa ett HTML-element (suprise). Det du gör genom att sätta document.createElement("duh") är att ange en typ av element som inte finns i någon HTML-specifikation, nämligen <duh>. Istället är en riktig elementtyp att föredra, t ex en definitionsterm, ett stycke eller en div.
Funktionen document.createTextNode är till för att infoga text i ett element, och tar en textsträng som parameter. När du kör document.createTextNode(elem), är ju elem ingen textsträng utan ett objekt, där till är det ett påhittat "duh"-objekt eller som webbläsaren uttrycker det, [object HTMLUnknownElement]
Så här kan man istället gå till väga för att skapa ett element och lägga till innehåll i detta:
var elem = document.createElement("p"); //skapa ett stycke
elem.appendChild(document.createTextNode("Innehåll i p")); //lägga till en textnod i stycket
container.appendChild(elem); //infoga stycket i ett godtyckligt element
Bara du får de grundläggande koncepten klart för dig ska det inte vara några problem. Jag rekommenderar iaf riktig DOM-scripting framför innerHTML som totoo föreslog ovan. Det är mycket smidigare att använda objekt framför att hårdkoda HTML inuti Javascriptet.