javascript - 在已经制作的 jquery 代码中的问题之间放置一些 2 秒的休息时间
问题描述
我有一个 jquery 代码,可用于将一个问题更改为另一个问题。他们自己的问题存储在 div 中。但是,我正在尝试解决如何在这些问题之间进行一些小的时间制动。
我目前唯一的解决方案是在特定时间隐藏/显示带有问题的每个 div,但这在代码方面真的很糟糕,我想要一些看起来很漂亮并且可以轻松更改的东西(时间-明智的)。
jQuery(function() {
var $els = $('div[id^=question]'),
i = 0,
len = $els.length;
$els.slice(1).hide();
setInterval(function() {
$els.eq(i).fadeOut(function() {
i = (i + 1) % len
$els.eq(i).fadeIn();
})
}, 15000)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="question1"></div>
<div id="question2" class="question">
<input type="radio" name="q1" value="non" id="non" style="visibility: hidden" checked><br>
<label> <input type="radio" name="q1" value="1" id="guess" class="radio" >Rain</label>
<label> <input type="radio" name="q1" value="2" id="guess" class="radio" >No rain</label><br>
</div> <br>
<div id="question3" class="question">
<input type="radio" name="q2" value="non" id="non" style="visibility: hidden" checked><br>
<label> <input type="radio" name="q2" value="1" id="guess" class="radio" >Rain</label>
<label> <input type="radio" name="q2" value="2" id="guess" class="radio" >No rain</label><br>
</div> <br>
解决方案
看看我的做法。我用普通的旧 CSS 解决了大部分问题。
const getNextQuestion = (current) => {
let next = current.nextElementSibling;
if (next.tagName !== 'DIV') {
return;
}
return next;
}
let currentQuestion = document.querySelector('.is-open');
document.querySelector('button').addEventListener('click', () => {
let currentQuestion = document.querySelector('.is-open');
let nextQuestion = getNextQuestion(currentQuestion);
currentQuestion.classList.remove('is-open');
nextQuestion.classList.add('is-open');
currentQuestion = nextQuestion;
});
.question {
border: 1px solid red;
background: tomato;
margin-bottom: 25px;
border-radius: 25px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-family: 'Open Sans';
opacity: 0;
visibility: none;
transition: visibility 1s linear, opacity 1s linear;
}
.is-open {
opacity: 1;
visibility: visible;
}
<div>
<div class="question is-open">
Question 1
</div>
<div class="question">
Questi
<div>
<div class="question is-open">
Question 1
</div>
<div cla<div>
<div class="question is-open">
Question 1
</div>
<div class="question">
Question 2
</div>
</div>
<button>
Next Question
</button> ss="question"> Question 2
</div>
</div>
<button>
Next Question
</button> on 2
</div>
</div>
<button>
Next Question
</button>
推荐阅读
- c# - 如何在 C# winforms 应用程序中将 html 文件保存到 MyDocuments
- c# - unity coroutine 无故停止
- coldfusion - Coldfusion GetComponentMetaData 函数顺序
- angular - FormGoup:删除下拉菜单的选中值
- javascript - 如何用包含 JSX 代码的替代品替换文本?
- java - 将对象序列化为以对象类为键的映射?
- nginx - Kong/nginx/CLB - 关闭与 SSE 通知的连接
- javascript - 将值保存到猫鼬中的常量的正确方法是什么?
- atom-editor - 如何将 Atom 包重置为默认值
- django - django 从 datatimefield 计算总小时数