This question has already been answered:

There is a js script:

var user = new Object(); user.date = new Object(); user.pref = new Object(); user.log = new Object(); user.date.name = "name"; user.date.ip = "ip"; user.date.login = "login"; user .pref.prefName = "prefName"; user.log.username = "username"; user.log.time = "time"; user.log.mac = "mac"; document.write("<ul>"); for(objItem in user){ document.write("<li>"+objItem+"</li>"); document.write("<ul>"); for(itemLevel1 in objItem){ document.write("<li>"+itemLevel1+"</li>"); } document.write("</ul>"); } document.write("</ul>"); 

It is necessary that it displays the structure of the user object as nested lists. This is a training example. Outputting only the top level fields, here is an example of the output

enter image description here

Who knows what's wrong?

Reported as a duplicate at Grundy. javascript Dec 1 '16 at 13:48 .

A similar question was asked earlier and an answer has already been received. If the answers provided are not exhaustive, please ask a new question .

  • Oh, and plus to the duplicate: objItem is a string. - Grundy
  • so her keys are character indexes - Grundy

1 answer 1

 var user = { date: { name: 'name', ip: 'ip', login: 'login' }, pref: { prefName: 'prefName' }, log: { username: 'username', time: 'time', mac: 'mac' } }; var list = document.createElement('ul'); document.getElementById('listwrap').appendChild(list); writeList(user, list); function writeList(obj, parentUl) { for(var prop in obj) { var item = obj[prop]; var itemEl = document.createElement('li'); parentUl.appendChild(itemEl); if(typeof item == 'object') { itemEl.innerHTML = prop; var listInner = document.createElement('ul'); parentUl.appendChild(listInner); writeList(item, listInner); } else { itemEl.innerHTML = prop +': '+ item; } } } 
 <div id="listwrap"></div>