JSFiddle - React, Tailwind, and code Playground
HTML
<fieldset>
<label>Which of the following is a liquid?</label>
<ul class="q">
<li><input type="radio" id="q1-a" name="q1-ans" value="a" onclick="revealResult(true)" hidden="" autocomplete="off"> A - Water</li>
<li><input type="radio" id="q1-b" name="q1-ans" value="b" onclick="revealResult(false)" hidden="" autocomplete="off"> B - Ice</li>
<li><input type="radio" id="q1-c" name="q1-ans" value="c" onclick="revealResult(false)" hidden="" autocomplete="off"> C - Steam</li>
</ul>
<div id="q1-result" aria-live="assertive" hidden=""></div>
<details id="q1-static-ans">
<summary>Answer</summary>
<p>A - Water</p>
</details>
<div style="margin-top: 1rem;">
<input type="button" value="Reset" onclick="resetQ()"/>
<input type="button" value="Toggle View" onclick="toggleQ()"/>
</div>
</fieldset>
JavaScript
document.onload = configureTest();
function configureTest() {
document.getElementById('q1-static-ans').classList.add('hidden');
document.getElementById('q1-result').removeAttribute('hidden');
var q1_ans = document.getElementsByName('q1-ans');
q1_ans.forEach( function(checkbox) {
checkbox.removeAttribute('hidden');
});
}
function revealResult(correct) {
var res_elem = document.getElementById('q1-result');
var result = correct ? 'Correct!' : 'Sorry, try again!';
res_elem.textContent = '';
res_elem.appendChild(document.createTextNode(result));
}
function resetQ() {
var ans = document.getElementsByName("q1-ans");
for (var i = 0; i < ans.length; i++) {
ans[i].checked = false;
}
document.getElementById('q1-result').textContent = '';
}
function toggleQ() {
if (document.getElementById('q1-result').hidden) {
resetQ();
configureTest();
}
else {
configureStaticTest();
}
}
function configureStaticTest() {
document.getElementById('q1-static-ans').classList.remove('hidden');
document.getElementById('q1-result').setAttribute('hidden','');
var q1_ans = document.getElementsByName('q1-ans');
q1_ans.forEach( function(checkbox) {
checkbox.setAttribute('hidden','');
});
}