Javascript 导致按钮出现问题的If-else语句 更新#1-澄清问题,新的工作链接。 实时链接:
我试图解决的问题在于页面右栏中表单按钮的if-else语句。向下滚动标题和导航栏,查看问题所在执行以下操作时会出现问题:Javascript 导致按钮出现问题的If-else语句 更新#1-澄清问题,新的工作链接。 实时链接:,javascript,jquery,if-statement,Javascript,Jquery,If Statement,我试图解决的问题在于页面右栏中表单按钮的if-else语句。向下滚动标题和导航栏,查看问题所在执行以下操作时会出现问题: 单击其中一个表单按钮,单击其他表单按钮,然后取消选择在countup.js完成之前单击的第二个按钮 最终目标 当没有选择任何表单按钮时,“您的出价将是”下的数字应该是三个hypens的字符串--,表示没有值 相反,.new\u amount的数字倒计时,HTML成为totalAmount的值,这是我不希望发生的 scripts.js index.html(仅按钮)
- 单击其中一个表单按钮,单击其他表单按钮,然后取消选择在
完成之前单击的第二个按钮countup.js
- 当没有选择任何表单按钮时,“您的出价将是”下的数字应该是三个hypens的字符串
,表示没有值--
- 相反,
的数字倒计时,HTML成为.new\u amount
的值,这是我不希望发生的totalAmount
第一步
从下面的金额中选择一个添加到当前出价中
$10
$25
$50
$100
$250
$500
上一次出价是
---
您的出价将
$
---
问题很简单:countup方法会一直运行并更新值,即使您将其重置为“---”
幸运的是,解决方案也非常简单。在$('.total\u amount').html(“--”)之前添加以下行代码>:
if (count.typeof == "object") { // just checking if the count object actually exists.
count.pauseResume();
count.reset();
}
为了使其工作,您必须使count对象全局可用。因此,改变这一行:
var count = new CountUp("count", 0, totalAmount, 0, 1.5, options);
对此:(只需删除“var”)
比较如下:
那你应该表现得很好
注意:我从countup.js文件派生的count对象的方法。问题与if
/else
条件无关
问题是,计数插件正在覆盖文本(因为在if
/else
条件中设置文本后,它仍在执行)
根据,.start()
方法接受一个函数作为回调函数,该函数将在动画结束时执行
因此,最简单的解决方法是检查回调中是否有任何选定的按钮元素。如果没有任何选定元素,则将.total\u amount
的文本设置为--
:
var count = new CountUp("count", 0, totalAmount, 0, 1.5, options);
count.start(function() {
if ($('.button__form.is-selected').length === 0) {
$('.total__amount').text("---");
}
});
counterArray.forEach(function (count) {
if (count && count.reset) {
count.reset();
}
});
$('.total__amount').text("---");
或者,您也可以创建count
对象的数组
在下面的代码段中,有一个计数器数组
数组,它包含每个计数
对象
在if
语句中,在设置的文本之前,对数组中的每个对象使用.reset()
方法:
var count = new CountUp("count", 0, totalAmount, 0, 1.5, options);
count.start(function() {
if ($('.button__form.is-selected').length === 0) {
$('.total__amount').text("---");
}
});
counterArray.forEach(function (count) {
if (count && count.reset) {
count.reset();
}
});
$('.total__amount').text("---");
以下是相关代码和一个示例
(为了简洁起见,删除了不相关的代码)
你应该做一个JSFIDLE。@Mark这是一个JSBin:对不起,我现在花了15分钟试图理解你的问题,但我仍然不能。你能提供更多的细节吗?此外,在JSBin中,countup.js不包括在内。因为这与问题有关,所以包含countup代码将非常有帮助。@Gabrielmachts我已经澄清了问题,并添加了一个包含countup.js的链接。希望您现在能够看到问题。@Mark我已经更新了问题并提供了一个工作链接。您答案的第二部分非常有用。只是等了10个小时才悬赏。尽管第一个答案很简单,但问题在于它会在一段时间内闪烁totalAmount
的值几秒钟,然后将文本更改为占位符“---”文本。
counterArray.forEach(function (count) {
if (count && count.reset) {
count.reset();
}
});
$('.total__amount').text("---");
var baseAmount = 0;
var totalAmount = baseAmount;
var counterArray = [];
$('.button__form').on('click', function() {
if ($(this).hasClass('is-selected')) {
// ....
counterArray.forEach(function (count) {
if (count && count.reset) {
count.reset();
}
});
$('.total__amount').text("---");
} else {
// ....
$(function() {
var options = {};
var count = new CountUp("count", 0, totalAmount, 0, 1.5, options);
count.start();
counterArray.push(count);
});
}
});