求高手急救!!!!
json数据如下:
var chat=[
    {
        'aa': '110000000',
        'chatLog': [
 {'name1': 'abc','hour': '1111111111','content': '你好!'},
 {'name1': 'efg','hour': '2222222222','content': '不好!'},
 {'name1': 'efg','hour': '1111111111','content': '你好!'},
 {'name1': 'efg','hour': '2222222222','content': '不好!'},
 {'name1': 'abc','hour': '1111111111','content': '你好!'},
 {'name1': 'efg','hour': '2222222222','content': '不好!'}
         ]
},
{
'aa': '11',
'chatLog': [
 {'name1': 'abc','hour': '1111111111','content': '你好!'},
 {'name1': 'efg','hour': '2222222222','content': '不好!'},
 {'name1': 'abc','hour': '1111111111','content': '你好!'},
 {'name1': 'efg','hour': '2222222222','content': '不好!'}
]
}
]js部分为:
<script type="text/javascript">
$().ready(function() {
   for(var i=0;i<chat.length;i++)
   {
   var div= document.createElement('div');
   div.innerHTML='<span class="chat_time">'+chat[i].aa+'</span><hr/><dl></dl>'
   div.className='chat_win';
   $(".panal").append(div);
     for(var j=0;j<chat[i].chatLog.length;j++)
 {
 var dt=document.createElement('dt');
 $(".panal dl").append(dt);
}没有达到我要的效果???求修改!

   
}
});
</script>
<body>
<div class="panal"></div>
</body>想实现成以下效果:
<div class="panal">
<div class="chat_win">
<span class="chat_time">110000000</span>
<hr/>
<dl>
<dt class="chat_A"><span>abc</span><span>1111111111</span></dt>
<dd>你好!</dd>
<dt class="chat_B"><span>efg</span><span>2222222222</span></dt>
<dd>不好!</dd>
<dt class="chat_B"><span>efg</span><span>1111111111</span></dt>
<dd>你好!</dd>
<dt class="chat_B"><span>efg</span><span>2222222222</span></dt>
<dd>不好!</dd>
<dt class="chat_A"><span>abc</span><span>1111111111</span></dt>
<dd>你好!</dd>
<dt class="chat_B"><span>efg</span><span>2222222222</span></dt>
<dd>不好!</dd> </dl>
</div>
<div class="chat_win">
<span class="chat_time">11</span>
<hr/>
<dl>
<dt class="chat_A"><span>abc</span><span>1111111111</span></dt>
<dd>你好!</dd>
<dt class="chat_B"><span>efg</span><span>2222222222</span></dt>
<dd>不好!</dd>
<dt class="chat_A"><span>abc</span><span>1111111111</span></dt>
<dd>你好!</dd>
<dt class="chat_B"><span>efg</span><span>2222222222</span></dt>
<dd>不好!</dd> </dl>
</div>
</div>

解决方案 »

  1.   


    $(document).ready(function() {for(var i=0;i<chat.length;i++)
    {
    var div= document.createElement('div');
    div.innerHTML='<span class="chat_time">'+chat[i].aa+'</span><hr/><dl></dl>'
    div.className='chat_win';
    $(".panal").append(div);
    for(var j=0;j<chat[i].chatLog.length;j++)
    {
    var dt=document.createElement('dt');
    dt.innerHTML=chat[i].chatLog[j].content
    $(".panal dl").append(dt);
    dt=document.createElement('dt');
    dt.innerHTML="<span>"+chat[i].chatLog[j].name1+"</span><span>"+chat[i].chatLog[j].hour+"</span>"
    $(".panal dl").append(dt);
    }
     
    }
    });
      

  2.   

    $().ready(function () {
        var div, dl, clsKV, chr = 65;
        for (var i = 0; i < chat.length; i++) {
            div = document.createElement('div');
            div.innerHTML = '<span class="chat_time">' + chat[i].aa + '</span><hr/><dl></dl>'
            div.className = 'chat_win';
            $(".panal").append(div);
            dl = $(div).find('dl');
            clsKV = {};
            chr = 65;
            for (var j = 0; j < chat[i].chatLog.length; j++) {//////////////
                if (!clsKV[chat[i].chatLog[j].name1]) {//样式控制
                    clsKV[chat[i].chatLog[j].name1] = new String.fromCharCode(chr);
                    chr++;
                }
                dl.append('<dt class="chat_' + clsKV[chat[i].chatLog[j].name1] + '"><span>' + chat[i].chatLog[j].name1 + '</span><span>' + chat[i].chatLog[j].hour + '</span></dt><dd>' + chat[i].chatLog[j].content + '</dd>');
            }    }
    });
      

  3.   

    这样不行,我之前就是这么做的,但是dt/dd会变多,本来是6条和4条数据,会变成10条和4条数据。你再帮忙看看
      

  4.   

    搞错,多了个new,代码出处了
    $().ready(function () {
        var div, dl, clsKV, chr = 65;
        for (var i = 0; i < chat.length; i++) {
            div = document.createElement('div');
            div.innerHTML = '<span class="chat_time">' + chat[i].aa + '</span><hr/><dl></dl>'
            div.className = 'chat_win';
            $(".panal").append(div);
            dl = $(div).find('dl');
            clsKV = {};
            chr = 65;
            for (var j = 0; j < chat[i].chatLog.length; j++) {//////////////
                if (!clsKV[chat[i].chatLog[j].name1]) {//样式控制
                    ///clsKV[chat[i].chatLog[j].name1] = new String.fromCharCode(chr);                clsKV[chat[i].chatLog[j].name1] = String.fromCharCode(chr);
                    chr++;
                }
                dl.append('<dt class="chat_' + clsKV[chat[i].chatLog[j].name1] + '"><span>' + chat[i].chatLog[j].name1 + '</span><span>' + chat[i].chatLog[j].hour + '</span></dt><dd>' + chat[i].chatLog[j].content + '</dd>');
            }    }
    });
      

  5.   

    dt=document.createElement('dt');
    dt.innerHTML="<span>"+chat[i].chatLog[j].name1+"</span><span>"+chat[i].chatLog[j].hour+"</span>"
    $(".panal dl").append(dt);
      

  6.   

    $(".panal dl").append(dt);你这个选择器有问题啊,会将所有的dt给dl重新加一次。其他代码你应该都清楚,就接卸关键的
            dl = $(div).find('dl');//这里获取刚添加到dom的dl对象,以后使用此对象操作,而不是$(".panal dl"),这样会操作所有已经添加到dom的dl对象
            clsKV = {};//重置样式键值对象
            chr = 65;//A字符对应的数字编码
            for (var j = 0; j < chat[i].chatLog.length; j++) {//////////////
                if (!clsKV[chat[i].chatLog[j].name1]) {//样式控制,判断是否存在对应名字的kv对了,没有则添加
                    clsKV[chat[i].chatLog[j].name1] = String.fromCharCode(chr);//从数字生成字符
                    chr++;//换到下一个字符,变换样式
                }
    ////////////往前面获取到的dl增加内容
                dl.append('<dt class="chat_' + clsKV[chat[i].chatLog[j].name1] + '"><span>' + chat[i].chatLog[j].name1 + '</span><span>' + chat[i].chatLog[j].hour + '</span></dt><dd>' + chat[i].chatLog[j].content + '</dd>');
            }