我正在迭代一个JavaScript数组对象。我编写了一个迭代数组元素的函数。它的工作原理但在结果之上有写的“未定义的”#。我不想看到这个,知道如何解决这个未定义的词语会很有帮助。
var userlist = [{
"username": "Tom",
"Current_latitude": 23.752805,
"Current_longitude": 90.375433,
"radius": 500
},
{
"username": "Jane",
"Current_latitude": 23.752805,
"Current_longitude": 90.375433,
"radius": 400
},
{
"username": "Dave",
"Current_latitude": 23.765138,
"Current_longitude": 90.362601,
"radius": 450
}, {
"username": "Sarah",
"Current_latitude": 23.792452,
"Current_longitude": 90.416696,
"radius": 600
},
{
"username": "John",
"Current_latitude": 23.863064,
"Current_longitude": 90.400126,
"radius": 640
}
];
var x = Tom(userlist);
function Tom(user) {
var text;
for (var i = 0; i < user.length; i++) {
text += "<li>" + user[i].username + "</li>";
};
//text+="</ul>"
document.getElementById("demo").innerHTML = text;
}
//document.getElementById("demo").innerHTML=userlist[0].username+" "+userlist[0].Current_latitude + " " + userlist[0].Current_latitude+"" + userlist[0].Current_longitude+" "+ userlist[0].radius;
&#13;
<p>How to create A javaScript Object Array.</p>
<p id="demo"></p>
&#13;
答案 0 :(得分:6)
您需要将有价值的text
初始化为空字符串,如下所示:
var text = "";
JavaScript中未初始化的变量默认为特殊值undefined
,在连接中找到文本。
正如评论中所述,您的HTML也存在一个问题:<li>
标记应仅显示在包含<ul>
,<ol>
或<menu>
标记内。
您可以考虑将<li>
... </li>
更改为<div>
... </div>
或将<ul>
{{</ul>
{{{{{ {1}}。
答案 1 :(得分:4)
这是因为你还没有初始化你的变量:
var text; //text is undefined at this point
for (var i = 0; i < user.length; i++)
{
//the first iteration of the loop will append to "undefined"
text+="<li>"+ user[i].username+"</li>";
};
只需给它一个初始值:
var text = '';
for (var i = 0; i < user.length; i++)
{
text+="<li>"+ user[i].username+"</li>";
};
然而,正如Juhana所指出的,这不会产生有效的标记。您可以取消注释结束标记,并将text
初始化为<ul>
,而不是:
var text = '<ul>';
for (var i = 0; i < user.length; i++)
{
text+="<li>"+ user[i].username+"</li>";
};
text += "</ul>";