【发布时间】:2020-11-23 15:20:04
【问题描述】:
我正在构建一个预订系统,我目前正在尝试将所有不同的步骤相互连接起来。我想通过“上一个”和“下一个”按钮将它们连接起来,在那里我实现了一个 switch 语句来计算点击次数并相应地隐藏/显示某个步骤。
但是,我意识到 switch 语句不再有意义,因为用户可能会比我设置的情况更多地点击上一个 和 下一个按钮。我在下面粘贴了我当前的代码,我知道一定有更短的方法,但我不确定如何连接这两个按钮以使其正常工作。
理想情况下,我需要在不同的点击时触发不同的事件。
HTML 代码:
<div class="bookingArea">
<div id="bookingOverlay" class="overlay">
<button id="bookBtn">Click to book!</button>
<div class="overlay-content">
<hr>
<div class="bookingSteps">
</div>
<!-- AVAILABILITY -->
<form class="availability step1">
</form>
<!-- buttons -->
<button class="previous hide">Previous</button>
<button class="next">Next</button>
<!-- PERSONAL DATA -->
<form class="personalData step2">
</form>
<!-- ORDER OVERVIEW -->
<div class="orderOverview step3">
</div>
<!-- PAYMENT -->
<form class="payment step4">
</form>
<!-- RECEIPT -->
<div class="receipt step5">
</div>
</div>
</div>
</div>
JS代码:
// activate "next" btn
var counter = 0;
document.querySelector(".next").addEventListener('click', function () {
document.querySelector(".previous").classList.remove("hide");
switch (++counter) {
case 1:
document.querySelector(".availability").classList.add("step1");
document.querySelector(".personalData").classList.remove("step2");
return +counter;
case 2:
document.querySelector(".personalData").classList.add("step2");
document.querySelector(".orderOverview").classList.remove("step3");
return +counter;
case 3:
document.querySelector(".orderOverview").classList.add("step3");
document.querySelector(".payment").classList.remove("step4");
return +counter;
case 4:
document.querySelector(".payment").classList.add("step4");
document.querySelector(".receipt").classList.remove("step5");
return +counter;
}
counter = 0;
});
// activate "previous" btn
var counter = 0;
document.querySelector(".previous").addEventListener('click', function () {
switch (++counter) {
case 1:
return +counter;
case 2:
document.querySelector(".availability").classList.remove("step1");
document.querySelector(".personalData").classList.add("step2");
console.log("2");
return +counter;
case 3:
document.querySelector(".personalData").classList.remove("step2");
document.querySelector(".orderOverview").classList.add("step3");
console.log("3");
return +counter;
case 4:
document.querySelector(".orderOverview").classList.remove("step3");
document.querySelector(".payment").classList.add("step4");
console.log("4");
return +counter;
case 5:
document.querySelector(".payment").classList.remove("step4");
document.querySelector(".receipt").classList.add("step5");
console.log("5");
return +counter;
}
counter = 0;
});
【问题讨论】:
-
你能分享你的html吗?
-
@ShahnawazHossan 现在在帖子里:)
-
你的代码看起来很乱,你想通过点击上一个或下一个按钮来显示一个特定的字段,不是吗?
-
@ShahnawazHossan 是的,我意识到,我刚刚清理了它。是的,正是
-
看看我的回答。
标签: javascript switch-statement counter