weixin_33744141 2020-04-15 20:20 采纳率: 0%
浏览 56

Ajax呼叫输出和超时

Ive build an ajax counter which outputs max 6 digits - e.g. "120398" and repeats the call

function updateNumbers(){
    $.ajax({
    url: totalnumbers.ajaxurl,
    data: {
        action: 'numberstotal'
    },
    success: function (response) {
        var numbers = response.toString(10).replace(/\D/g, '0').split('').map(Number);
        //console.log(numbers);
        var newHTML = [];
        for (var i = 0; i < 6; i++) {
            newHTML.push('<span>' + numbers[i] + '</span>');
        }
        $('.counter').html(newHTML.join(""));
    }
    });
    setTimeout(updateMinutes, 5000);
}

updateNumbers();

this works so far.

Question 1:

Now when there are only 4 digits (1234) I still need an output of total like this

<span>0</span>
<span>0</span>
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>

what I get is

<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>undefined</span>
<span>undefined</span>

Question 2:

When theres a total of 200000 I want to quit the setTimeout-Function. But I dont know how to get the response out of the ajax call to check before setting the timeout.

Help would be great. It seems like I am almost there :(

  • 写回答

1条回答 默认 最新

  • weixin_33728708 2020-04-16 01:00
    关注

    After a little thinking I made it happen:

    function updateNumbers(){
    $.ajax({
    url: totalnumbers.ajaxurl,
    data: {
        action: 'numberstotal'
        },
        success: function (response) {
            if (response < 20000) {
                var stringlength = response.length;
                var numbers = response.toString(10).replace(/\D/g, '0').split('').map(Number);
                var newNumbers = numbers;
                for (var i = stringlength; i < 7; i++) {
                    newNumbers.unshift(0);
                }
                var totalNumbers = $.map(newNumbers, function(num) {
                        return('<span>' + num + '</span>');
                    });
                $('.counter').html(totalNumbers.join(""));   
                setTimeout(updateNumbers, 5000);
                }
            else {
                var numbers = response.toString(10).replace(/\D/g, '0').split('').map(Number);
                var totalNumbers = $.map(numbers, function(num) {
                        return('<span>' + num + '</span>');
                    });
                $('.counter').html(totalNumbers.join(""));
            }
            } 
        });
    }
    updateNumbers();
    
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大