聊天生成无限段落

时间:2016-12-19 12:03:01

标签: javascript jquery

我从聊天中获得了这部分代码。我正在为我的网站工作,我想让它在段落中生成聊天但是在10行之后我想要第一个删除自己等等所以我们可以随时观看最后10条消息。我该如何管理?

以下是生成<p>

的代码部分
function updateChat(){
 if(!instanse){
     instanse = true;
     $.ajax({
           type: "POST",
           url: "process.php",
           data: {  
                    'function': 'update',
                    'state': state,
                    'file': file
                    },
           dataType: "json",
           success: function(data){
               if(data.text){
                    for (var i = 0; i < data.text.length; i++) {
                        $('#chat-area').append($("<p>"+ data.text[i] +"</p>"));
                    }                                 
               }
               document.getElementById('chat-area').scrollTop = document.getElementById('chat-area').scrollHeight;
               instanse = false;
               state = data.state;
           },
        });
 }
 else {
     setTimeout(updateChat, 1500);
 }}

2 个答案:

答案 0 :(得分:0)

for(var i = 0; i < data.text.length; i++){
    $('#chat-area').append($("<p>"+ data.text[i] +"</p>"));
    if($('#chat-area > p').length > 10){
        $('#chat-area > p').first().remove();
    }
}

或者如果您想在for:

之后只进行一次检查
if($('#chat-area > p').length > 10){
    $('#chat-area > p').slice(0, $('#chat-area > p').length - 10).remove();
}

答案 1 :(得分:0)

一种可能的解决方案是迭代最后10个条目并将它们附加到容器中。最后10个条目的辅助函数应该像这样写。

>takeLast = function(ary, batch_size) {
...  return ary.slice(ary.length-batch_size, ary.length);
... }

>x = 
[ 'Lorem',
  'ipsum',
  'dolor',
  'sit',
  'amet,',
  'consectetuer',
  'adipiscing',
  'elit,',
  'sed',
  'diam',
  'nonummy',
  'nibh',
  'euismod',
  'tincidunt',
  'ut',
  'laoreet',
  'dolore',
  'magna',
  'aliquam',
  'erat',
  'volutpat.',
 ]

>take(x, 10)
[ 'nibh',
  'euismod',
  'tincidunt',
  'ut',
  'laoreet',
  'dolore',
  'magna',
  'aliquam',
  'erat',
  'volutpat' ]