加载时可以单击按钮#1,然后需要单击按钮#2两次.按钮#1也需要点击两次
Button #1 can be clicked on load, then Button #2 needs to be clicked twice. Button #1 then also needs to be clicked twice
我正在创建的网站上有两个按钮。它们用于移动幻灯片放映类型的表单。一个向前移动"幻灯片放映",另一个向后移动。
加载网页后,您可以成功单击"下一步"按钮一次,将幻灯片按选定方向移动。您可以任意多次单击"下一步"按钮,直到到达终点。但是,切换到"上一步"需要在执行操作之前单击两次。您现在可以单击"后退"按钮一次来执行操作。单击"下一步"按钮现在需要单击两次,就像以前单击"上一步"一样。
HTML:
<div id="signupFormButtonWrapper">
<button id="signupFormBack" class="button">Back</button>
<button id="signupFormNext" class="button">Next</button>
</div>
JS:
$(function() {
var currentScreen = 1;
$('#signupFormNext').click(function() {
console.log('Moving screen forwards');
if (currentScreen < $('.signupSection').length) {
$('#signupInfo').css('margin-left',currentScreen*(-100/$('.signupSection').length)+'%');
currentScreen++;
} else {
console.log('Can''t move');
}
});
$('#signupFormBack').click(function() {
console.log('Moving screen backwards');
if (currentScreen >= 1) {
currentScreen--;
$('#signupInfo').css('margin-left',currentScreen*(-100/$('.signupSection').length)+'%');
} else {
console.log('Can''t move');
}
});
});
请原谅console.log
语句,它们用于调试目的。如果有帮助的话,当点击按钮时,控制台会记录"向前移动屏幕"或"向后移动屏幕",无论是否执行了操作。如果您需要更多的代码,只需询问即可。
提前感谢
嗯,逻辑有问题。每次单击下一个按钮时,currentScreen的旧值将用于计算左边距。
例如,您在屏幕4上移动到屏幕5,4将用于计算,然后currentScreen将更新为5。
如果您在这一点上单击返回,currentScreen将从5减少到4,4将再次用于计算,这将导致与单击下一个按钮时先前计算的值相同(因此没有变化)。因此,在currentScreen的值减为3之前,需要单击两次。
右键单击后退按钮2次后,currentScreen为3,单击下一个按钮将导致3用于计算,并且左边距的值将与上一个值相同。因此,在看到屏幕移动到下一张幻灯片之前,需要单击两次。
您似乎在移动后增加当前屏幕,但在移动屏幕之前减少当前屏幕。因此,让我们通过逻辑(状态跟踪currentScreen变量(启动时为1)和幻灯片图像(启动时0)
STATE: currentScreen = 1, slide-image = 0
ACTION: Next button pressed
WHAT HAPPENS:
slide-image -> 1
currentScreen -> 2
STATE: currentScreen = 2, slide-image = 1
ACTION: Next button pressed
WHAT HAPPENS:
slide-image -> 2
currentScreen -> 3
所以这很好,现在当我们按下时会发生什么
STATE: currentScreen = 3, slide-image = 2
ACTION: Prev button pressed
WHAT HAPPENS:
currentScreen -> 2
slide-image -> 2
STATE: currentScreen = 2, slide-image = 2
ACTION: Prev button pressed
WHAT HAPPENS:
currentScreen -> 1
slide-image -> 1
在这里你可以看到,因为你在设置之前递减,所以有一个滞后。当你改变方向时,同样的事情再次发生。若要解决此问题,请在0处启动计数器,然后在每次设置图像之前递减/递增。例如:
$(function() {
var currentScreen = 0; // start at 0
$('#signupFormNext').click(function() {
console.log('Moving screen forwards');
if (currentScreen < $('.signupSection').length) {
currentScreen++; // increment before you set css
$('#signupInfo').css('margin-left',currentScreen*(-100/$('.signupSection').length)+'%');
} else {
console.log('Can''t move');
}
});
$('#signupFormBack').click(function() {
console.log('Moving screen backwards');
if (currentScreen >= 1) {
currentScreen--;
$('#signupInfo').css('margin-left',currentScreen*(-100/$('.signupSection').length)+'%');
} else {
console.log('Can''t move');
}
});
});
我认为您的逻辑有问题。
请参阅以下jsfiddle:https://jsfiddle.net/q8pby5cL/1/
我把动作抽象成一个函数。我将.signupSection
上的检查替换为用于测试的硬编码值。
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 加载时可以单击按钮#1,然后需要单击按钮#2两次.按钮#1也需要点击两次
- 当使用jquery live功能时,按钮将被触发两次
- 当再次单击时,我希望颜色消失.(喜欢/讨厌按钮,一切都可以,但如果我点击两次喜欢按钮,我希望颜色消失)
- 必须点击两次按钮才能执行功能
- JS函数中的一个点击按钮被调用了两次
- 十月CMS-单选按钮Ajax连续点击两次导致内容消失
- 按钮点击功能启动两次
- 需要单击按钮两次才能使javascript函数提供输出
- 按钮启动应用程序,但不会启动两次
- Facebook Javascript sdk,需要按两次登录按钮
- 单击两次提交按钮以发布表单
- 必须单击按钮两次才能执行功能 - jQuery
- 我的幻灯片网站仅在单击按钮两次以运行 JS 时才有效
- 防止在angularjs中单击按钮两次
- jQuery -必须按下按钮两次或更多次,使功能坚持
- 动画Javascript显示/隐藏按钮两次
- 点击按钮两次提交表格
- 当点击一个按钮两次时,多个功能
- 为什么我必须点击这个输入按钮两次才能调用一个函数?