【发布时间】:2021-04-05 08:48:02
【问题描述】:
我需要你的帮助,因为我已经在一个项目上工作了好几个小时,但没有取得任何进展。我们的网站上将安装一个“动画”计数器。例如,这显示了每月的成本节省。到目前为止,以下代码运行良好。
<script>
/* <![CDATA[ */
var ersparnis = 4600;
var inv = setInterval(function() {
if(ersparnis < 4800)
document.getElementById("counter_ersparnis").innerHTML = ++ ersparnis;
else
clearInterval(inv);
}, 500 / 100);
/*]]>*/
</script>
<h2>
+ <span id="counter_ersparnis"></span> €
</h2>
但现在我希望 Javascript 仅在用户滚动到相关点时启动。我现在尝试使用来自 Internet 的 jQuery 代码来执行此操作,但没有成功!
<script>
/* <![CDATA[ */
jQuery.fn.isOnScreen = function()
{
var win = jQuery(window);
var viewport = {
top : win.scrollTop(),
left : win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();
var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};
jQuery(window).scroll(function()
{
if(jQuery('#element').isOnScreen())
{
var ersparnis = 4600;
var inv = setInterval(function() {
if(ersparnis < 4800)
document.getElementById("counter_ersparnis").innerHTML = ++ ersparnis;
else
clearInterval(inv);
}, 500 / 100);
/*]]>*/
</script>
<h2>
+ <span id="counter_ersparnis"></span> €
</h2>
} }
顺便说一句,整个事情应该是在一个Jimdo网站上实现的,所以我还在头部区域添加了带有以下代码的数据库。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js" type="text/javascript"></script>
您可能已经听说过,我对 CSS/HTML 和 Javascript 并不是很熟悉。因此,如果有人可以为我提供即插即用的解决方案,那就太好了。我通常会重写它,但不会一起修补(因为我希望其中三个计数器彼此相邻。
【问题讨论】:
-
您是否尝试将
#element替换为实际ID#counter_ersparnis?
标签: javascript counter viewport