如何计算动态创建的列表的长度

时间:2019-07-20 10:29:43

标签: javascript php jquery html

我正在创建一个聊天框,其中以列表的形式获取聊天消息。我的问题是,每当我单击“开始聊天”按钮时,我都必须打开聊天框,然后计算列表数。我的聊天框正在打开,但列表的长度始终为零。如何解决这个问题。

$(document).on('click', '.start_chat', function(){
		var to_user_id = $(this).data('touser_id');
		var to_user_name = $(this).data('tousername');
		//console.log(to_user_id);
		var getdata;
    
		$.ajax({
			url:"chat_id_table.php",
			method:"POST",
			data:{to_user_id:to_user_id},
			async:false,
			dataType:'json',
			success:function(data)
			{    
				//console.log(data);
				getdata = JSON.parse(data);
				//console.log(getdata);
			}
		})
		if($('#user_dialog'+to_user_id).length == 0){
			make_chat_box(to_user_id, to_user_name, getdata);
		}
		var chat_length = $('.msg_list').find("li").length;
    });

1 个答案:

答案 0 :(得分:0)

获取聊天数据是一个异步呼叫。因此,发生的情况是在数据输入之前对列表进行了计数。 为了解决这个问题,将列表计数器包装在一个函数中,并在输入数据后调用它。 固定代码在这里

$(document).on('click', '.start_chat', function(){
        var to_user_id = $(this).data('touser_id');
        var to_user_name = $(this).data('tousername');
        //console.log(to_user_id);
        var getdata;

        $.ajax({
            url:"chat_id_table.php",
            method:"POST",
            data:{to_user_id:to_user_id},
            async:false,
            dataType:'json',
            success:function(data)
            {    
                //console.log(data);
                getdata = JSON.parse(data);
                //console.log(getdata);
                var chat_len = counter();
            }
        })

    });

        function counter(){
          if($('#user_dialog'+to_user_id).length == 0){
            make_chat_box(to_user_id, to_user_name, getdata);
          }
          var chat_length = $('.msg_list').find("li").length;
          return chat_length;
        }