【发布时间】:2021-01-15 13:46:10
【问题描述】:
我正在使用 JavaScript 编写一些计数器,但遇到了需要分隔符的大数字问题。所以我只为需要分隔符的计数器重写了一部分 JavaScript。我创建了一个单独的函数来创建分隔符。我还构建了计数器应该从滚动时的页面偏移开始。这是我的完整 JavaScript 代码:
<script type="text/javascript">
jQuery(document).ready(function ($) {
var element_position = $("#projecten-in-beeld").offset().top;
$(window).on("scroll", function () {
var y_scroll_pos = window.pageYOffset;
var scroll_pos_test = element_position;
if (y_scroll_pos > scroll_pos_test) {
$(".fact-inhoud").each(function () {
var $this = $(this),
countTo = $this.attr("data-count");
$({ countNum: $this.text() }).animate(
{
countNum: countTo,
},
{
duration: 3000,
easing: "linear",
step: function () {
$this.text(Math.floor(this.countNum));
},
complete: function () {
$this.text(this.countNum);
//alert('finished');
},
}
);
}); // end data-count
$(".fact-inhoud2").each(function () {
var $this = $(this),
countTo = $this.attr("data-count2");
$({ countNum: $this.text() }).animate(
{
countNum: countTo,
},
{
duration: 5000,
easing: "linear",
step: function () {
$this.text(commaSeparateNumber(Math.floor(this.countNum)));
},
complete: function () {
$this.text(commaSeparateNumber(this.countNum));
//alert('finished');
},
}
);
}); // end data-count
}
});
});
function commaSeparateNumber(val) {
while (/(\d+)(\d{3})/.test(val.toString())) {
val = val.toString().replace(/(\d+)(\d{3})/, "$1" + "." + "$2");
}
return val;
}
</script>
它工作得很好,当我在计数器所在的 DIV 时,计数器开始运行。当我在柜台上滚动时,他们会停下来并继续计数他们停止的地方。当我滚动时,只有对分隔符使用“commaSeparateNumber”函数的新计数器从零开始。
由于某种原因,我怎样才能杀死这个只执行一次而不是每次再次滚动时执行的功能?
【问题讨论】:
-
您使用的是 Windows“onScroll”,因此每次滚动时都会执行...
标签: javascript function counter