到达 HTML 文件中的某个点时为数字和文本设置动画

Posted

技术标签:

【中文标题】到达 HTML 文件中的某个点时为数字和文本设置动画【英文标题】:Animate Number and Text when reach a certain point in the HTML file 【发布时间】:2016-07-25 02:34:54 【问题描述】:

当我向下滚动 html 文件并到达某个部分时,我想用文本计算数字。代码如下所示:

<h3 class="count">25 Years</h3>
<p>On the Road...</p>

<h3 class="count">143 Million</h3>
<p>Transactions worldwide 2015</p>
$('.count').each(function() 
    $(this).prop('Counter', 0).animate(
        Counter: $(this).text()
    , 
        duration: 4000,
        easing: 'swing',
        step: function (now) 
            $(this).text(Math.ceil(now));
        
    );
);

问题是我只输入一个数字才能得到正确的结果。如果我输入像25 Years 这样的字符串,它会输出NaN

对我的代码有什么建议吗?

var targetOffset = $(".company-numbers").offset().top;

        var $w = $(window).scroll(function()
            if ( $w.scrollTop() > targetOffset ) 
                (function () 
                    $('.count').each(function () 
                        $(this).prop('Counter',0).animate(
                            Counter: $(this).text()
                        , 
                            duration: 4000,
                            easing: 'swing',
                            step: function (now) 
                                $(this).text(Math.ceil(now));
                                return false;
                            
                        );
                    );
                )();
             else 
                return false;
            
        )

【问题讨论】:

【参考方案1】:

如果您想像在函数或 JSON 中创建具有键值的数组一样操作,则必须为元素分配数值。

【讨论】:

欢迎来到 SO 但请提供您的答案并提供示例或提供参考链接以便更好地理解【参考方案2】:

请检查这段代码,你真的想要这样吗? 告诉我!!!

<h3 class="count">25 Years</h3>
<p>On the Road...</p>

<h3 class="count">143 Million</h3>
<p>Transactions worldwide 2015</p>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script>
   $('.count').each(function () 
                $(this).prop('Counter',0).animate(
                    Counter: $(this).text().match(/\d/g).length
                , 
                    duration: 4000,
                    easing: 'swing',
                    step: function (now) 
                        $(this).text(Math.ceil(now));
                    
                );
            );
            </script>

或者如果您想计算总字符数,请更改“计数器”属性。

Counter: $(this).html().length

【讨论】:

嗨 Gaurav,谢谢你的建议。不幸的是 .match(/\d/g).length 和 .html().length 没有输出正确的数字/字符串。 嗨@151RUM 你真的想从“count”类的字符串中计算字符数吗? 不,我想为计数类的内容设置动画,例如 40.000 个单位,然后当到达 HTML 文件中的内容时,它应该在 4 秒内从零计数到 40000...你得到它伴侣? :)【参考方案3】:

问题是因为您的 jQuery 代码期望该值能够被解析为整数。尝试将要计数的值放在它们自己的元素中,例如&lt;span&gt;,然后对这些值调用 jQuery 逻辑。

<h3><span class="count">25</span> Years</h3>
<p>On the Road...</p>

<h3><span class="count">143</span> Million</h3>
<p>Transactions worldwide 2015</p>

【讨论】:

这行得通,但如果我把它放在条件语句中,代码会向上计数,但之后开始倒计时......我尝试返回 false,但它没有成功......请检查我的代码的第一篇文章...

以上是关于到达 HTML 文件中的某个点时为数字和文本设置动画的主要内容,如果未能解决你的问题,请参考以下文章

当用户到达页面中的特定点时如何打印内容? (不依赖于任何类或 ID 元素)

当工具提示在 ng-bootstrap 中到达 y 轴上的某个点时,是不是可以更改工具提示的位置?

使用 IHttpClientFactory 设置默认请求标头

页面多个文本框,默认值为灰色,修改时为黑色,失去焦点是又变为灰色怎么弄?

如何用BAT判断文本中的字符串是不是为纯数字,即没有字母,并去执行两个相应的操作

设置参考号并将其与文本文件中的其他数据进行比较