似乎以下代码不会打印任何内容,而正如您所见,它应该是。 基本上没有Firebug报告的错误。
var assign = {
'href' : {
'.voteUp' : '?p=action&a=voteup&pid='+ value.PostPID,
'.voteDown' : '?p=action&a=votedown&pid='+ value.PostPID,
'.postImage a': '?p=user&uid='+ value.UserUID
},
'src' : {
'.postImage img' : value.UserImage
},
'html' : {
'.repCount' : value.PostRep,
'.postInfo .rep': value.UserRep,
'.postInfo .name': value.UserName,
'.postInfo .time': value.PostTime,
'.postMessage' : value.PostText
}
};
$.each(assign, function(type, data) {
switch (type)
{
case 'html':
$.each(data, function(handler, value) {
$('#'+ value.PostPID +' '+ handler).html(value);
});
break;
case 'href':
case 'src':
$.each(data, function(handler, value) {
$('#'+ value.PostPID +' '+ handler).attr(type, value);
});
break;
}
});
这是其他代码的一部分,但其余的脚本运行良好(例如,在此代码之后有一个fadeIn
内容的函数)。如果你在这里找不到任何不好的东西,请在上面评论,我将添加整个脚本。
感谢。
答案 0 :(得分:2)
没有任何对象具有PostPID
属性。
由于value
表示引用的对象b html
,src
等,因此您需要在这些对象中使用属性来获取正确的值
例如:
case 'html':
$.each(data, function(handler, value) {
$('#'+ value['.repCount']+' '+ handler).html(value);
});
break;
或许你想要其他 value
标识符(问题的来源不包括在内)。
在这种情况下,将$.each()
处理程序的参数重命名为其他内容。
case 'html':
// renamed value paramter---v---to make the previous "value" accessible
$.each(data, function(handler, v) {
$('#'+ value.PostPID+' '+ handler).html(v['.repCount']);
// original----^ "each" parameter------^
});
break;