Проблема с тестом
Помогите пожалуйста! Если человек выбрал вариант А, потом Б и снова А то баллы плюсуются двум типам личности сразу, а нужно чтобы плюсовался только окончательному ответу. Еще если человек несколько раз подряд нажал на один вариант ответа то баллы плюсуются столько раз сколько он нажал, а нужен 1 бал.
let real = 0;
function r1() {
real += 1;
}
let intel = 0;
function i1() {
intel += 1;
}
let social = 0;
function s1() {
social = social + 1;
}
let convect = 0;
function c1() {
convect = convect + 1;
}
let pred = 0;
function p1() {
pred = pred + 1;
}
let artist = 0;
function a1() {
artist = artist + 1;
}
<p>1.<input type="radio" name="answer1" class="switch" id="switch1" onclick="r1();">
<label class="switch-for" for="switch1"></label><span class="vubor">Инженер-техник</span>
<Br>
<input type="radio" name="answer1" onclick="i1();" class="switch" id="switch2">
<label class="switch-for" for="switch2"></label><span class="vubor">Инженер-контролер</span>
<Br>
</form>
<form id="2">
<p>2.<input type="radio" onclick="r1();" name="answer2" class="switch" id="switch3">
<label class="switch-for" for="switch3"></label><span class="vubor">Вязальщик</span>
<Br>
<input type="radio" name="answer2" onclick="s1();" class="switch" id="switch4">
<label class="switch-for" for="switch4"></label><span class="vubor">Санитарный врач</span>
<Br>
</form>
<form id="3">
<p>3.<input type="radio" name="answer" onclick="r1()" class="switch" id="switch5">
<label class="switch-for" for="switch5"></label><span class="vubor">Повар</span>
<Br>
<input type="radio" name="answer" onclick="c1()" class="switch" id="switch6">
<label class="switch-for" for="switch6"></label><span class="vubor">Наборщик</span>
<Br>
</form>
<form id="4">
<p>4.<input type="radio" name="answer" onclick="r1()" class="switch" id="switch7">
<label class="switch-for" for="switch7"></label><span class="vubor">Фотограф</span>
<Br>
<input type="radio" name="answer" onclick="p1()" class="switch" id="switch8">
<label class="switch-for" for="switch8"></label><span class="vubor">Зав. магазином</span>
<Br>
</form>
<form id="5">
<p>5.<input type="radio" name="answer" onclick="r1()" class="switch" id="switch9">
<label class="switch-for" for="switch9"></label><span class="vubor">Чертежник</span>
<Br>
<input type="radio" name="answer" onclick="a1()" class="switch" id="switch10">
<label class="switch-for" for="switch10"></label><span class="vubor">Дизайнер</span>
<Br>
Ответы (1 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
Количество радио маленькое, кликать будут раз в несколько секунд. В этом случае можно каждый раз циклом тупо всё пересчитать:
let answers = document.querySelectorAll('form input[type="radio"]');
// Собирает нумерованный список из всех радио внутри form.
for (let i = 0; i < answers.length; i++) {
// При изменении значения каждого из них, будет запускаться функция update
answers[i].addEventListener("change", update);
}
function update() {
let result = {};
for (let i = 0; i < answers.length; i++) {
if (answers[i].checked) {
val = answers[i].dataset.type;
// val -- строка data-type="...", записанная в HTML очередного радио.
// (Однобуквенные значения сохранены из исходного HTML)
result[val] = (result[val] || 0) + 1;
}
}
console.clear();
console.log( result );
}
form { border-bottom: 1px solid #ddd }
label { display: block }
code { white-space: nowrap !important }
<form>
<label><input data-type="r" type="radio" name="answer1"> <span class="prof">Инженер-техник</span></label>
<label><input data-type="i" type="radio" name="answer1"> <span class="prof">Инженер-контролер</span></label>
</form>
<form>
<label><input data-type="r" type="radio" name="answer2"> <span class="prof">Вязальщик</span></label>
<label><input data-type="s" type="radio" name="answer2"> <span class="prof">Санитарный врач</span></label>
</form>
<form>
<label><input data-type="r" type="radio" name="answer3"> <span class="prof">Повар</span></label>
<label><input data-type="c" type="radio" name="answer3"> <span class="prof">Наборщик</span></label>
</form>
<form>
<label><input data-type="r" type="radio" name="answer4"> <span class="prof">Фотограф</span></label>
<label><input data-type="p" type="radio" name="answer4"> <span class="prof">Зав. магазином</span></label>
</form>
<form>
<label><input data-type="r" type="radio" name="answer5"> <span class="prof">Чертежник</span></label>
<label><input data-type="a" type="radio" name="answer5"> <span class="prof">Дизайнер</span></label>
</form>