JQuery,数组问题

时间:2011-02-21 19:52:21

标签: javascript ajax arrays json

似乎以下代码不会打印任何内容,而正如您所见,它应该是。 基本上没有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内容的函数)。如果你在这里找不到任何不好的东西,请在上面评论,我将添加整个脚本。 感谢。

1 个答案:

答案 0 :(得分:2)

没有任何对象具有PostPID属性。

由于value表示引用的对象b htmlsrc等,因此您需要在这些对象中使​​用属性来获取正确的值

例如:

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;