我将json响应附加到html元素。代码非常简单
HTML
<div>
<ul id='grid'></ul>
</div>
的jQuery
data = ["Paintings",{ "age":0}]
$(function() {
$.each(data, function(i,index) {
$('div').find('ul').append('<li>'+index.age+'</li>');
});
});
输出看起来像这样
未定义
0
undefined来自哪里?
我尝试使用它删除未定义的
$('#grid').children(':first-child').remove('li');
但它删除了“0”和未定义。
答案 0 :(得分:1)
您的数据是一个包含两个元素的数组,字符串'Paintings'
和对象{age:0}
。
当你的代码迭代'数据'时,data.0.age
评估为'未定义'(因为它是一个字符串,不能有子项),data.1.age
的计算结果为'0'。
也无需在<ul>
中找到<div>
,因为您已将<ul>
和id设为“网格”(除非您想将此数据附加到<div>
1}}包含<ul>
)。
尝试重组数据,并直接定位<ul>
,如下所示:
data = {"Paintings" : [{"age":0}, {"age":5}]};
$.each(data.Paintings, function(i,index) {
$('#grid').append('<li>'+index.age+'</li>');
});
答案 1 :(得分:1)
undefined
来自"Pages".age
。试试这个:
$.each(data, function(i,index) {
if (index.hasOwnProperty('age')) {
$('div').find('ul').append('<li>'+index.age+'</li>');
}
});
答案 2 :(得分:1)
data
是一个数组,数组的第一个元素是字符串Paintings
。数组的第二个元素是具有属性age
的对象。
each
遍历数组中的两个元素,因为字符串没有属性age
,所以它会创建一个带有文本undefined
的LI。
您可以更改数据结构或在数组中查找object
或string
并做出相应的反应......不确定您要执行的操作。不清楚你在使用Paintings