添加测验计时器,如果计时器达到0,则淡出/跳到下一个
Adding a Quiz Timer, Fade Out/Skip to the next if timer reaches 0
我是jQuery的新手,但熟悉其他一些语言。我最近买了一个智力竞赛类型的脚本,我正试图为每个问题添加一个简单的15秒计时器。这只是一个有趣的测试,所以不需要担心用户使用javascript来增加时间等。
基本上,如果用户在15秒内没有选择问题,它将自动转到下一个问题,计时器将重新启动。
答案有.next
标签,选择后会进入下一个问题,如下面的代码所示(希望如此)。
superContainer.find('.next').click(function () {
$(this).parents('.slide-container').fadeOut(500, function () {
$(this).next().fadeIn(500)
});
return false
});
我遇到的问题是,如果我使用setInterval
,我不知道如何再次选择合适的div来淡入淡出,并在下一个中淡入淡出。我试过下面的代码和一些类似的零碎想法,但它不起作用,但也许它会让我更好地了解我想要什么。
superContainer.find('.next').click(function () {
$active_count = $count;
countInterval = setInterval(function() {
$active_count--;
if($active_count <= 0){
clearInterval(countInterval);
$active_count = $count;
$(this).parents('.slide-container').fadeOut(500, function () {
$(this).next().fadeIn(500)
});
}
$('.question-timer').html($active_count);
}, 1000);
$(this).parents('.slide-container').fadeOut(500, function () {
$(this).next().fadeIn(500)
});
return false
});
我使用JQuery才一两天,所以请原谅任何明显的错误和错误代码!如果您需要任何其他代码或信息,请告诉我
这对于第一个jQuery项目来说是相当棘手的。
(在这个解决方案中)的诀窍是考虑一个goNext
函数,该函数可以通过两种方式调用——响应点击事件和响应15秒的setTimeout()
,而不是setInterval()
。
$(function(){
var questionTimeout = null;
function goNext($el) {
clearTimeout(questionTimeout);
var $next = $el.next();
$el.fadeOut(500, function() {
if($next.length > 0) {
$next.fadeIn(500, function() {
questionTimeout = setTimeout(function() {
goNext($next);
}, 15000);
});
}
else {
afterLastQuestion();
}
});
}
function afterLastQuestion(){
alert("last question complete");
$start.show();
}
var $superContainer = $("#superContainer").on('click', '.next', function() {
goNext($(this).closest('.slide-container'));
return false;
});
var $start = $("#start").on('click', function(){
$(this).hide();
$superContainer.find(".slide-container")
.eq(0).clone(true,true)
.prependTo(superContainer)
.find(".next").trigger('click');
return false;
});
});
演示
该过程通过单击"开始"链接开始,导致克隆第一个问题,然后模拟单击克隆的"下一个"链接。这确保了(实际的)第一个问题的处理方式与其他问题完全相同。
我还包含了一个afterLastQuestion()
函数。在最后一个问题得到回答(或超时)后,修改其操作以执行任何必要的操作。
您可以将当前问题保存在一个变量中,在next
点击和计时器中重置,例如
var $current;
superContainer.find('.next').click(function (e) {
e.preventDefault();
$(this).parents('.slide-container').fadeOut(500, function () {
$(this).next().fadeIn(500);
$current = $(this).next();
});
});
您只需要将其设置为初始化时的第一个问题,并记住在next
点击时重置计时器
此外,通常最好使用e.preventDefault()
而不是return false
。
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 创建一个倒计时计时器脚本,该脚本计算声音文件的持续时间,而不是特定的日期
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 试图创建一个24小时计时器来重置自己
- 制作一个按钮倒计时计时器,该计时器将在5分钟后永久禁用,即使在页面刷新时也应保持禁用状态
- 添加测验计时器,如果计时器达到0,则淡出/跳到下一个
- 试图修复一个倒计时计时器问题,该问题导致计时器运行,然后在使用Javascript时崩溃约10秒
- 如何制作两个倒计时计时器,如果一个开始,另一个会停止
- 我怎么能有一个实时计时器,在3秒的循环内每秒钟更新一次
- 按下按钮时JS计时器未启动
- 当我们使用JavaScript点击下一个或上一个按钮时,图像幻灯片播放计时器的速度会加快
- 字段验证器,它不允许移动到下一个字段
- 修复一个看起来波涛汹涌的倒计时计时器
- 如何编写一个函数的脚本,为HTML中显示的JavaScript计数计时器添加秒数
- 如何停止多次单击下一个以破坏我的图像旋转器
- 渗出一个简单的倒数计时器的问题
- 我想要一个警报框,在倒数计时器中使用 javascript 的 10 分钟
- 如何创建一个倒数计时器,用户在其中输入任何数字并将其从该数字显示为零
- 如何在不使用setTimeout的情况下运行/构建一个简单的计时器
- 使用计时器触发一个jquery函数