动画计数器没有动画- Javascript
Animated counter not animating at all - Javascript
我有以下JavaScript动画:
window.onload = function() {
// should return a number like 100
var total = parseInt(document.getElementById('foo').className);
function showBars(bars) {
document.getElementById("bar").innerHTML = bars + " bars";
if (bars < total) {
setTimeout(showBars(bars + 1), 20);
}
}
console.log(total);
if (total > 0) showBars(0);
}
HTML: <span id="foo" class="100" />
<p id='bar' class='100'>100 Bars</p>
因此,我只看到发布的数字(100
),而不是一个接一个地增加柱(用户可见)的预期效果。我知道问题是在window.onload
上,但我怎么能用其他事件来代替window.onload
,这将产生我正在寻找的结果?
可能主要问题在这里:
setTimeout(showBars(bars + 1), 20);
代码调用 showBars
函数并将其返回值传递给setTimeout
,就像foo(bar())
调用 bar
并将其返回值传递给foo
一样。
如果用
代替setTimeout(showBars.bind(null, bars + 1), 20);
…它将传递一个函数给setTimeout
,当该函数被调用时,将以bars + 1
作为参数调用showBars
。
现场示例:(我还删除了class
属性,以数字开头的类,用data-max
替换foo
上的属性,如注释中所讨论的)
window.onload = function() {
// should return a number like 100
var total = parseInt(document.getElementById('foo').getAttribute("data-max"));
function showBars(bars) {
document.getElementById("bar").innerHTML = bars + " bars";
if (bars < total) {
setTimeout(showBars.bind(null, bars + 1), 20);
}
}
if (total > 0) showBars(0);
};
<span id="foo" data-max="180" />
<p id='bar'>100 Bars</p>
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- 一个动画javascript中包含多个图像
- 循环动画javascript,SetInterval只工作一次
- 关闭时如何制作动画?[Javascript]
- 增强动画(JavaScript+CSS)
- 没有jQuery的动画javascript
- 删除所有可拖动元素时显示按钮/播放消息.Adobe Edge动画Javascript/Jquery
- 将元素从后到前动画javascript
- 动画javascript scrollLeft使用XUI
- 如何通过堆叠图像动画Javascript
- 如何编辑URL名称,同时动画JavaScript锚滚动
- 动画Javascript显示/隐藏按钮两次
- 动画Javascript显示/隐藏按钮
- 动画javascript框架
- 谷歌I'm感觉幸运按钮动画javascript
- 我如何保持我的调整大小动画(javascript)不会弄乱我的(css)"浮动“;布局
- 调整图像大小时需要更平滑的动画javascript
- CSS 动画 + Javascript 回调
- Canvas动画javascript函数和全局变量
- 动画计数器没有动画- Javascript