Jeg fandt så også en uhensigtsmæssighed (som mærkværdigvis ikke har noget renderingsmæssig betydning !-), så her er en bedre udgave:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
<title>Tomt dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html,body{height:100%;margin:0px;border:0px;padding:0px;font-family:tahoma,verdana,arial,sans-serif;font-size:small;}
ul{list-style:inside;}
</style>
<script type="text/javascript">
var menu = [
["Hovedmenu", ["punkt1","punkt2","punkt 3"]],//et menu-punkt er opbygget af menu-tekst + menu-punkter
["Menu 1", ["Under1","Under2","Under3"]],
["Menu 2", ["Under1",[
"Under2",["Under2under1","Under2under2"]
],"Under3"]]//Hvis der er underpunkter, er de selv arrays i stedet for tekster
];
window.onload = function(){
var mainUl = document.createElement("ul");//Lav hoved UL'en
document.getElementById("minDiv").appendChild(mainUl);
for(var i=0,im=menu.length;im>i;i++){//For hvert menu-punkt sal der laves et punkt med tilhørende ny ul
createUl(mainUl,menu[i]);
}
}
function createUl(parElm, elm){
//lav og append list-elementet
var newElm = document.createElement("li");
newElm.appendChild(document.createTextNode(elm[0]));
parElm.appendChild(newElm);
//lav en ny unordered list til menupunkterne
var newSub = document.createElement("ul");
newElm.appendChild(newSub);
for(var i=0,im=elm[1].length;im>i;i++){
alert(typeof elm[1][i]);
if(typeof elm[1][i] == "object")//Hvis menupunktets indhold er et array
createUl(newSub,elm[1][i]);//Sakl der laves et menu-punkt med en ny UL
else{
//Hvis menu-punktet er tekst, skal der oprettes et list-element til det
var newLi = document.createElement("li");
//Her skal der tilføjes kode, der først deler menupunktets tekst, og så opretter et a-element med link og tekst
newLi.appendChild(document.createTextNode(elm[1][i]));
newSub.appendChild(newLi);
}
}
}
</script>
</head>
<body>
<div id="minDiv">En div-tekst</div>
</body>
</html>