javascript - 用于显示从获取 API 对象生成的数字的 jQuery 中的计数器效果显示 isNaN 错误
问题描述
我想显示使用 JSON 从 API 中获得的数字。我想在那里放置反效果,它显示“isNaN”。API URL 返回一个对象并将总数保存在 data.data 中有人可以帮我解决这个问题吗?
<p class="Count member-count" style="color:#BA1823; font-size: 40px;">
<script>
$.getJSON('https://url.com/cmp/server/api/get-total-member', function(data) {
var text = `${data.data}<br>`
$(".member-count").html(text);
});
</script>
</p>
<script>
$('.Count').each(function () {
var $this = $(this);
jQuery({ Counter: 0 }).animate({ Counter: $this.text() }, {
duration: 1000,
easing: 'swing',
step: function () {
$this.text(Math.ceil(this.Counter));
}
});
});
</script>
解决方案
问题是因为 AJAX 调用是异步的,所以each()
包含动画逻辑的循环在请求完成并且元素有任何内容之前运行。p
要解决此问题,请将each()
调用放在 AJAX 回调中:
<p class="Count member-count"></p>
$.getJSON('https://url.com/cmp/server/api/get-total-member', function(data) {
$(".member-count").html(`${data.data}<br>`);
$('.Count').each(function() {
var $this = $(this);
jQuery({
Counter: 0
}).animate({
Counter: data.data
}, {
duration: 1000,
easing: 'swing',
step: function() {
$this.text(Math.ceil(this.Counter));
}
});
});
});
.member-count {
color: #BA1823;
font-size: 40px;
}
还值得注意的是,您不应该将<script>
标签放在 HTML 结构的中间。要么将它们放在 中,要么<head>
放在</body>
. 同样,不要将 CSS 规则放在内联style
属性中。将它们放在外部 .css 文件中。这是一个带有完整纠正的 HTML 和 JS的jsFiddle 。
推荐阅读
- cordova - Framework7 v5 包含自定义 js 文件的最佳方式
- java - 什么 RegEx 分隔多项式的项
- python - 如何为 Combobox 值的每次更改唯一地将函数绑定到 Ttk Combobox
- python - 将不同行数的列附加到 DataFrame
- tensorflow - 如何训练一个简单的神经网络来实现中值滤波?
- reactjs - 无法在 useEffect 反应钩子中调度动作
- javascript - 无法从简单的提取中创建 blob
- encryption - PEM_read_X509 函数
- java - NavigationComponents - NavigationDrawer 在 Java 中不起作用 [错误]
- shell - 如何在 python 脚本中运行 postgres 命令并将其写入文件?