- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图解决的问题在于页面右栏中表单按钮的 if-else 语句。向下滚动到标题和导航栏以查看实际问题。 当我执行以下操作时出现问题:
countup.js
完成之前单击的第二个按钮当没有选择任何表单按钮时,“您的出价将是”下的数字应该只是一串三个连字符 ---
表示没有值
相反,.new__amount
的数字倒计时并且 HTML 成为 totalAmount
的值,我不希望发生这种情况。
/*-------------------------------------
STEP ONE: PLACE BID
--------------------------------------*/
$.ajax({
url: "https://sheetsu.com/apis/4a8eceba",
method: "GET",
dataType: "json"
}).then(function(spreadsheet) {
// Print current bid
var currentBid = parseInt(spreadsheet.result.pop().Bids);
$(".current__amount").html("$" + currentBid);
var baseAmount = 0;
var totalAmount = baseAmount;
$('.button__form').on('click', function() {
var value = $(this).val();
if ($(this).hasClass('is-selected')) {
$(this).removeClass('is-selected');
$(".check--one").css("color", "#ccc");
$(".new__amount").css("margin-left", 10 + "px");
$(".bids__dollar").addClass("is--hidden");
totalAmount = parseInt(totalAmount) - parseInt(value);
console.log("If");
$('.total__amount').html("---");
} else {
$(".button__form").removeClass('is-selected');
$(this).addClass('is-selected');
$(".check--one").css("color", "#ffdc00");
totalAmount = currentBid; // reset the totalAmount to base
totalAmount = parseInt(totalAmount) + parseInt(value);
console.log("Else");
$('.total__amount').html("$" + totalAmount);
$(".bids__dollar").removeClass("is--hidden");
$(".new__amount").css("margin-left", 0 + "px");
/*-------------------------------------
COUNTUP
--------------------------------------*/
$(function() {
var options = {
useEasing: true,
useGrouping: true,
separator: '',
decimal: '',
prefix: '',
suffix: ''
};
var count = new CountUp("count", 0, totalAmount, 0, 1.5, options);
count.start();
});
}
});
});
<div class="bids__step bids--one">
<h2>Step One</h2>
<div class="bids__checkmark">
<i class="fa fa-check check--one"></i>
</div>
<p class="bids__note">Pick one of the amounts below to add to the current bid.</p>
<div class="buttons">
<button class="button__form button__one" value="10">$10</button>
<button class="button__form button__two" value="25">$25</button>
<button class="button__form button__three" value="50">$50</button>
<button class="button__form button__four" value="100">$100</button>
<button class="button__form button__five" value="250">$250</button>
<button class="button__form button__six" value="500">$500</button>
</div>
<!-- /.buttons -->
<div class="bids__amounts">
<div class="bids__amount bids__current">
<p class="bids__note">The last bid was</p>
<h4 class="current__amount">---</h4>
</div>
<div class="bids__amount bids__new">
<p class="bids__note">Your bid will be</p>
<h4 class="bids__dollar is--hidden">$</h4>
<h4 class="new__amount total__amount" id="count">---</h4>
</div>
<!-- /.bids__amount -->
</div>
<!-- /.bids__amounts -->
</div>
最佳答案
问题与 if
/else
条件无关。
问题是计数插件正在覆盖文本(因为在 if
/else
条件中设置文本后它仍在执行)。
根据CountUp.js documentation , .start()
方法接受一个函数作为回调,动画结束时执行。
因此,最简单的解决方法是检查回调中是否有任何选定的按钮元素。如果没有任何被选中的元素,则将.total__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("---");
}
});
或者,您也可以创建一个包含 count
个对象的数组。
在下面的代码片段中,有一个 counterArray
数组,其中包含每个 count
对象。
在 if
语句中,对数组 中的每个 count
对象使用 .reset()
方法em>在将 .total__amount
的文本设置为 ---
之前:
counterArray.forEach(function (count) {
if (count && count.reset) {
count.reset();
}
});
$('.total__amount').text("---");
这是相关代码和一个working example here .
(为简洁起见删除了不相关的代码)
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);
});
}
});
关于javascript - If-else 语句导致按钮出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34232049/
创建一个“海盗对话”,可以选择左手或右手。我希望它对“左”和“右”的不同拼写做出积极的回答(正如您将在代码中看到的那样),但是,当我为所有非“右”或“左”的输入添加最终的“else”代码时,它给了我一
With 语句 对一个对象执行一系列的语句。 With object statements End With 参数 object 必需的部分
While...Wend 语句 当指定的条件为 True 时,执行一系列的语句。 While condition  ; Version [stat
所以我正在处理的代码有一个小问题。 while True: r = input("Line: ") n = r.split() if r == " ":
我有一个对象数组: var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number"
int main() { int f=fun(); ... } int fun() { return 1; return 2; } 在上面的程序中,当从main函数中调用一个
我的项目中有很多 if 语句、嵌套 if 语句和 if-else 语句,我正在考虑将它们更改为 switch 语句。其中一些将具有嵌套的 switch 语句。我知道就编译而言,switch 语句通常更
Rem 语句 包含程序中的解释性注释。 Rem comment 或 ' comment comment 参数是需要包含的注释文本。在 Rem 关键字和 comment 之间应有一个空格。
ReDim 语句 在过程级中声明动态数组变量并分配或重新分配存储空间。 ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Randomize 语句 初始化随机数生成器。 Randomize [number] number 参数可以是任何有效的数值表达式。 说明 Randomize 使用 number 参数初始
Public 语句 定义公有变量并分配存储空间。在 Class 块中定义私有变量。 Public varname[([subscripts])][, varname[([subscripts])
Sub 语句 声明 Sub 过程的名称、参数以及构成其主体的代码。 [Public [Default]| Private] Sub name [( arglist )]
Set 语句 将对象引用赋给一个variable或property,或者将对象引用与事件关联。 Set objectvar = {objectexpression | New classname
我有这个代码块,有时第一个 if 语句先运行,有时第二个 if 语句先运行。我不确定为什么会这样,因为我认为 javascript 是同步的。 for (let i = 0; i < dataObje
这是一个 javascript 代码,我想把它写成这样:如果此人回答是,则回复“那很酷”,如果此人回答否,则回复“我会让你开心”,如果此人回答的问题包含"is"或“否”,请说“仅键入”是或否,没有任何
这是我的任务,我尝试仅使用简短的 if 语句来完成此任务,我得到的唯一错误是使用“(0.5<=ratio<2 )”,除此之外,构造正确吗? Scanner scn = new Scanner(
有没有办法在 select 语句中使用 if 语句? 我不能在这个中使用 Case 语句。实际上我正在使用 iReport 并且我有一个参数。我想要做的是,如果用户没有输入某个参数,它将选择所有实例。
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: If vs. Switch Speed 我将以 C++ 为例,但我要问的问题不是针对特定语言的。我的意思是一
Property Set 语句 在 Class 块中,声明名称、参数和代码,这些构成了将引用设置到对象的 Property 过程的主体。 [Public | Private] Pro
Property Let 语句 在 Class 块中,声明名称、参数和代码等,它们构成了赋值(设置)的 Property 过程的主体。 [Public | Private] Prop
我是一名优秀的程序员,十分优秀!