js解析json,并动态创建dom元素,放到指定元素下,求高手指点!

zygis666 2012-07-27 08:53:02
求高手急救!!!!
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>
...全文
651 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2012-07-27
  • 打赏
  • 举报
回复
$(".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>');
}
zygis666 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

搞错,多了个new,代码出处了
JScript code
$().ready(function () {
var div, dl, clsKV, chr = 65;
for (var i = 0; i < chat.length; i++) {
div = document.createElement('div');
div.innerHTML……
[/Quote]

哈哈,确实是我要的效果,可以解释下吗?你写的部分我不大懂,当然了,越详细越好,拜托啦
hch126163 2012-07-27
  • 打赏
  • 举报
回复
dt=document.createElement('dt');
dt.innerHTML="<span>"+chat[i].chatLog[j].name1+"</span><span>"+chat[i].chatLog[j].hour+"</span>"
$(".panal dl").append(dt);
Go 旅城通票 2012-07-27
  • 打赏
  • 举报
回复
搞错,多了个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>');
}

}
});
zygis666 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

JScript code
$().ready(function () {
var div, dl, clsKV, chr = 65;
for (var i = 0; i < chat.length; i++) {
div = document.createElement('div');
div.innerHTML = '<span class="……
[/Quote]
哎,运行无效果、、、
zygis666 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 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……
[/Quote]
这样不行,我之前就是这么做的,但是dt/dd会变多,本来是6条和4条数据,会变成10条和4条数据。你再帮忙看看。。。
Go 旅城通票 2012-07-27
  • 打赏
  • 举报
回复
$().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>');
}

}
});
孟子E章 2012-07-27
  • 打赏
  • 举报
回复

$(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);
}

}
});

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧