Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery hsCountdown为某些数字返回错误的值_Javascript_Jquery_Variables_Countdown_Var - Fatal编程技术网

Javascript jQuery hsCountdown为某些数字返回错误的值

Javascript jQuery hsCountdown为某些数字返回错误的值,javascript,jquery,variables,countdown,var,Javascript,Jquery,Variables,Countdown,Var,我使用重写的hsCountdown库,对于某些数字,它显示错误的值: 在上面的示例中,我为递增到指定了130,但hs倒计时只将其递增到125。为什么? 我在调试控制台所在的第行调试r变量,您的意思是什么?这个变量神奇地不是按整数递增,而是按浮点递增。 例如,54.0000000001而不是54。JavaScript,你喝醉了 功能{ 严格使用; a、 fn.hs计数器=功能B{ var c=a.extend{ 延误:50, 签名:之后, 类可见:倒计时可见, 小数分隔符:。, 订单分隔符: }

我使用重写的hsCountdown库,对于某些数字,它显示错误的值: 在上面的示例中,我为递增到指定了130,但hs倒计时只将其递增到125。为什么?

我在调试控制台所在的第行调试r变量,您的意思是什么?这个变量神奇地不是按整数递增,而是按浮点递增。 例如,54.0000000001而不是54。JavaScript,你喝醉了

功能{ 严格使用; a、 fn.hs计数器=功能B{ var c=a.extend{ 延误:50, 签名:之后, 类可见:倒计时可见, 小数分隔符:。, 订单分隔符: },b; 返回this.eachfunction{ b&a.extendc,b; 变量计时器,num,line,content,self=athis, win=awindow, winTop=win.scrollTop, winHeight=win.height, numb=self.datanum, 增量=self.dataincrement?self.dataincrement:numb/25>1.0?numb/25:1.0, 分数=self.datafrancial?self.datafrancial:0, 符号=self.datasign?self.datasign:, regExp=/\d?=\d\d\d+[^\d]|$/g, 开始=self.datastart?+self.datastart:0, 金额=a.倒计时金额, realMaxNumber=numb-增量; winTop=self.offset.top&&timer=setTimeoutfunction u{ var currentIncrement=分数>0?开始。ToFixed分数:开始;
$'debug_console'.append'[Condition debug]currentIncrement问题依赖于以下几行:

n=h.dataincrement?h.dataincrement:l/25>1.0?l/25:1.0, t=l-n

t基本上是该代码将计数到的数字。t的计算公式为l,它是data num属性,在本例中为130减去n,n是从data increment属性派生的

如您所见,您没有提供数据增量,代码默认为l/25,即130/25=5.2。然后,t is实际上将是l-n=130-5.2=124.8,这就是它计数为125而不是30的原因

一个简单的解决方案是将数据增量=1添加到你的H1标签中。你也可以考虑改变N个变量的默认计算。

编辑:

我看到您编辑了代码,这很好,因为它更易于调试。我认为解决方案应该是将这一行:start=numb,!0;更改为如下内容:self.find.countup-amount.htmlnumb;它基本上意味着如果当前的数字+增量值大于目标值,则意味着这是最后一步,而我们可以简单地用目标值填充span。

修复了JS代码

(function(a) {
    "use strict";
    a.fn.hsCounter = function(b) {
        var c = a.extend({
            delay: 50,
            signPos: "after",
            classVisible: "countup-vis",
            decimalSeparator: ".",
            orderSeparator: " "
        }, b);
        return this.each(function() {
            b && a.extend(c, b);
            var timer, num, line, content, self = a(this),
                win = a(window),
                winTop = win.scrollTop(),
                winHeight = win.height(),
                numb = self.data("num"),
                fractional = self.data("fractional") ? self.data("fractional") : 0,
                decim = fractional > 0 ? 0.5 : 1.0,
                increment = self.data("increment") ? self.data("increment") : (numb / 25 > decim ? numb / 25 : decim),
                sign = self.data("sign") ? self.data("sign") : "",
                regExp = /(\d)(?=(\d\d\d)+([^\d]|$))/g,
                start = self.data("start") ? +self.data("start") : 0,
                amount = a(".countup-amount");

                winTop <= self.offset().top && winTop + winHeight >= self.offset().top && (timer = setTimeout(function u() {
                    if ((fractional > 0 ? start.toFixed(fractional) : start) < numb) {
                        var stin = (start + increment > numb) ? (start = numb) : (start += increment);
                        return (stin, num = start.toFixed(fractional).replace(".", c.decimalSeparator).replace(regExp, "$1" + c.orderSeparator), content = self.find(amount).html(num), "after" == c.signPos ? self.html('<span class="countup-amount">' + num + '</span><span class="countup-sign">' + sign + "</span>") : "before" == c.signPos && self.html('<span class="countup-sign">' + sign + '</span><span class="countup-amount">' + num + "</span>"), self.hasClass("progress-up") && (self.html(self.html() + "<ins/>"), self.find("ins").css("width", start + "%")), self.parent().hasClass("countup-wrap") && (line = self.parent().find(".countup-line"), line.css("width", start + "%")), void(timer = setTimeout(u, c.delay)));
                    } else {
                        return (start = numb, !0);
                    }
                }, c.delay));
        });
    }
})(jQuery);

function initCounter(a, b) { b ? a.hsCounter() : a.text("0"); }

initCounter($(".counterup"), 1);

你最好先把你的代码弄清楚,然后再把它展示给我们。几乎不可能阅读…阅读关于Kiss的内容,例如,什么是难以阅读的?例如,变量名。对不起,如果我伤害了你的感情。我不打算这么做