gpt4 book ai didi

JavaScript 测验 – 使用 jQuery 更改类时动画出现故障(Animation Que Buildup)

转载 作者:行者123 更新时间:2023-11-28 16:03:58 25 4
gpt4 key购买 nike

      function main() {
$('.btnBack').click(function () {
var currentSlide = $('.active-slide').stop().fadeOut(500).removeClass('active-slide');
currentSlide.prev().stop().fadeIn(500).addClass('active-slide');
});

$('.btnNext1').click(function() {
var checkedRadioButtons = $(':radio:checked[name=q1]');
if(!checkedRadioButtons.length) {
alert('please select an answer before you proceed!');
}
else {
var currentSlide = $('.active-slide').stop().fadeOut(500).removeClass('active-slide');
currentSlide.next().stop().fadeIn(500).addClass('active-slide'); }
});


$('.btnNext2').click(function() {
var checkedRadioButtons = $(':radio:checked[name=q2]');
if(!checkedRadioButtons.length) {
alert('please select an answer before you proceed!');
}
else {
var currentSlide = $('.active-slide').stop().fadeOut(500).removeClass('active-slide');
currentSlide.next().stop().fadeIn(500).addClass('active-slide'); }
});

$('.btnNext3').click(function() {
var checkedRadioButtons = $(':radio:checked[name=q3]');
if(!checkedRadioButtons.length) {
alert('please select an answer before you proceed!');
}
else {
var currentSlide = $('.active-slide').stop().fadeOut(500).removeClass('active-slide');
currentSlide.next().stop().fadeIn(500).addClass('active-slide');
}
});
}

$(document).ready(main);


function btnSubmit_onclick() {
var myForm = document.form1;
var totalScore = 0;
var value;
var q1Ans = document.getElementById('q1correct');
if(q1Ans.checked == true) {
totalScore ++;
}
var q2Ans = document.getElementById('q2correct');
if(q2Ans.checked == true) {
totalScore ++;
}
var q3Ans = document.getElementById('q3correct');
if(q3Ans.checked == true) {
totalScore ++;
}
myForm.showResults.value ="your total score is "
+ totalScore + "/3!";
}
.slide {
display: none;
}
.slide.active-slide {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<form name="form1" action="" method="post">
<div class="slide active-slide">
<h3>Question 1: Answer is A!</h3>
<input type="radio" name="q1" id="q1correct" >A</input><br>
<input type="radio" name="q1" >B</input><br>
<input type="radio" name="q1" >C</input><br>
<input type="radio" name="q1" >D</input>
<input type="button" class="btnBack" value="Back">
<input type="button" class="btnNext1" value="Next" >
</div>
<div class="slide">
<h3>Question 2: Answer is B! </h3>
<input type="radio" name="q2" >A</input><br>
<input type="radio" name="q2" id="q2correct">B</input><br>
<input type="radio" name="q2" >C</input><br>
<input type="radio" name="q2" >D</input>
<input type="button" class="btnBack" value="Back">
<input type="button" class="btnNext2" value="Next">
</div>
<div class="slide">
<h3>Question 3: Answer is B! </h3>
<input type="radio" name="q3">A</input><br>
<input type="radio" name="q3" id="q3correct">B</input><br>
<input type="radio" name="q3">C</input><br>
<input type="radio" name="q3">D</input>
<input type="button" class="btnBack" value="Back">
<input type="button" class="btnNext3" value="Submit"
onclick="btnSubmit_onclick()">
</div>
<div class="slide">
<h3>Your Total Score</h3>
<textarea name="showResults" rows="8" cols="40" readonly="readonly"></textarea>
<input type="button" class="btnBack" value="Back">
</div>
</form>
</body>

我正在使用 JavaScript 创建一个测验,我试图在其中一次出现 1 个问题。

我已经通过使用 jQuery 和 CSS 更改类成功地隐藏和显示了问题。但是,在显示下一张幻灯片时动画会出现故障。下一张幻灯片显示在上一张幻灯片的下方,上一张幻灯片需要一些时间才能消失。

做一些研究我已经看到我尝试使用关于 animation que buildup 的 stop() 方法,但这似乎也不能解决问题。

我的 jQuery 如下

$('.btnBack').click(function () {
var currentSlide = $('.active-slide').stop().fadeOut(500).removeClass('active-slide');
currentSlide.prev().stop().fadeIn(500).addClass('active-slide');
});

$('.btnNext1').click(function() {

var currentSlide = $('.active-slide').stop().fadeOut(500).removeClass('active-slide');
currentSlide.next().stop().fadeIn(500).addClass('active-slide'); }
});

CSS

.slide {
display: none;
}
.slide.active-slide {
display: block;
}

HTML

<div class="slide active-slide">
<h3>Question 1: Answer is A!</h3>
<input type="radio" name="q1" id="q1correct" >A</input><br>
<input type="radio" name="q1" >B</input><br>
<input type="radio" name="q1" >C</input><br>
<input type="radio" name="q1" >D</input>
<input type="button" class="btnBack" value="Back">
<input type="button" class="btnNext1" value="Next" >
</div>
<div class="slide">
<h3>Question 2: Answer is B! </h3>
<input type="radio" name="q2" >A</input><br>
<input type="radio" name="q2" id="q2correct">B</input><br>
<input type="radio" name="q2" >C</input><br>
<input type="radio" name="q2" >D</input>
<input type="button" class="btnBack" value="Back">
<input type="button" class="btnNext2" value="Next">
</div>

jQuery 似乎正确,控制台上没有出现错误消息。

非常感谢您的帮助。

最佳答案

如果你想让动画淡出上一个问题,然后淡入下一个问题,你需要等待淡入淡出完成后再继续使用fadeOut回调:

$('.btnBack').click(function() {
var currentSlide = $('.active-slide').stop().fadeOut(500, function() {
$(this).removeClass('active-slide');
currentSlide.prev().stop().fadeIn(500).addClass('active-slide');
});
});

$('.btnNext1').click(function() {

var currentSlide = $('.active-slide').stop().fadeOut(500, function() {
$(this).removeClass('active-slide');
currentSlide.next().stop().fadeIn(500).addClass('active-slide');
});
});

请注意,我已将 fadeOut 之后的代码移到 fadeOut 回调中。

另请注意,以上内容依赖于您只有一个问题匹配 .active-slide 的事实,因为 fadeOut 将在每个动画时调用其回调元素结束。在我们的例子中,这只是一个,所以很好,但值得指出。

实例:

$('.btnBack').click(function() {
var currentSlide = $('.active-slide').stop().fadeOut(500, function() {
$(this).removeClass('active-slide');
currentSlide.prev().stop().fadeIn(500).addClass('active-slide');
});
});

$('.btnNext1').click(function() {

var currentSlide = $('.active-slide').stop().fadeOut(500, function() {
$(this).removeClass('active-slide');
currentSlide.next().stop().fadeIn(500).addClass('active-slide');
});
});
.slide {
display: none;
}
.slide.active-slide {
display: block;
}
<div class="slide active-slide">
<h3>Question 1: Answer is A!</h3>
<input type="radio" name="q1" id="q1correct">A
<br>
<input type="radio" name="q1">B
<br>
<input type="radio" name="q1">C
<br>
<input type="radio" name="q1">D
<input type="button" class="btnBack" value="Back">
<input type="button" class="btnNext1" value="Next">
</div>
<div class="slide">
<h3>Question 2: Answer is B! </h3>
<input type="radio" name="q2">A
<br>
<input type="radio" name="q2" id="q2correct">B
<br>
<input type="radio" name="q2">C
<br>
<input type="radio" name="q2">D
<input type="button" class="btnBack" value="Back">
<input type="button" class="btnNext2" value="Next">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于JavaScript 测验 – 使用 jQuery 更改类时动画出现故障(Animation Que Buildup),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39544040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com