Подскажите, пожалуйста, как можно правильно реализовать функцию подсчета конкретных "graph" и вывести их сумм в разные графы ?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Карта интересов</title>
<style>
h1, h2, {
text-align: center;
font-family: sans-serif;
}
ul.list_quest, div.result {
padding: 0;
margin: 0 auto;
width: 100%;
max-width: 1200px;
border-bottom: 1px solid #eee;
display: flex;
font-family: sans-serif;
}
ul.list_quest:nth-child(odd) {
background: #f7f7f7;
}
.list_quest li, div.result > div {
padding: 12px;
margin: 0;
list-style: none;
flex-basis: 25%;
width: 25%;
align-self: auto;
}
ul.list_quest:nth-child(odd) {
background: #f7f7f7;
}
.list_quest li, div.result > div {
padding: 12px;
margin: 0;
list-style: none;
flex-basis: 25%;
width: 25%;
align-self: auto;
}
li.quest {
font-weight: bold;
}
li.answer label {
display: flex;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
li.answer label:hover {
background: #dff;
box-shadow: 0 0 2px aqua;
}
div.text_box {
margin-left: 4px;
}
li.answer {
border-left: 1px solid #eee;
}
button {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
touch-action: manipulation;
cursor: pointer;
user-select: none;
border: 1px solid #ccc;
border-radius: 4px;
color: #333;
background-color: #fff;
outline: 0;
}
button:hover {
background-color: #e6e6e6;
border-color: #adadad;
outline: 0;
}
button:active {
background-image: none;
outline: 0;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
div.clear_btn {
flex-basis: 80% !important;
width: 75%;
padding-right: 14px;
}
div#result {
font-size: 30px;
font-weight: bold;
text-align: center;
}
</style>
<body>
<header>
<h1 align="center">"КАРТА ИНТЕРЕСОВ" А.Е. Голомшток</h1>
</header>
<h2>
<p align="left"><em>Инструкция:</em> для определения ведущих интересов Вам предлагается перечень вопросов.<br>
Если Вам очень нравится то, о чем спрашивается в вопросе, в бланке ответов рядом с его номером поставьте два плюса "++", <br>
если просто нравится - один плюс "+", <br>
если не знаете, сомневаетесь - ноль "0", если не нравится - один минус "-", <br>
а если очень не нравиться - два минуса "--".<br>
Отвечайте на вопросы, не пропуская ни одного из них. </p><br>
</h2>
<div id="questions"></div>
<div class="result">
<div class="clear_btn">
<button id="clear">Сбросить</button>
</div>
<div id="result"></div>
</div>
<h3 align="left">уровни выраженности:<br>
от -12 до -6 - высшая степень отрицания данного интереса;<br>
от -5 до -1 - интерес отрицается;<br>
от +1 до +4 - интерес выражен слабо;<br>
от +5 до +7 - выраженный интерес;<br>
от +8 до +12 - ярко выраженный интерес.</h3>
<script>
qs = [
{
query: 'Знакомиться с жизнью растений и животных.',
answer: [
{
value: 2,
text: 'очень нравится'
}, {
value: 1,
text: 'нравится'
},{
value: 0,
text: 'сомневаюсь'
}, {
value: -1,
text: 'не нравится'
}, {
value: -2,
text: 'совсем не нравится'
}
],
graph: 1,
},
{
query: 'Занятия и чтение книг по географии. ',
answer: [
{
value: 2,
text: 'очень нравится'
}, {
value: 1,
text: 'нравится'
},{
value: 0,
text: 'сомневаюсь'
}, {
value: -1,
text: 'не нравится'
}, {
value: -2,
text: 'совсем не нравится'
}
],
graph: 1,
},
{
query: 'Читать художественную или научно-папулярную литературу о геологических экспедициях.',
answer: [
{
value: 2,
text: 'очень нравится'
}, {
value: 1,
text: 'нравится'
},{
value: 0,
text: 'сомневаюсь'
}, {
value: -1,
text: 'не нравится'
}, {
value: -2,
text: 'совсем не нравится'
}
],
graph: 2,
},
{
query: 'Уроки и книги по анатомии и физиологии человека.',
answer: [
{
value: 2,
text: 'очень нравится'
}, {
value: 1,
text: 'нравится'
},{
value: 0,
text: 'сомневаюсь'
}, {
value: -1,
text: 'не нравится'
}, {
value: -2,
text: 'совсем не нравится'
}
],
graph: 2,
}
];
/* RENDER */
for (let i = 0; i < qs.length; i++) {
let q = qs[i];
let ul = document.createElement('ul');
ul.setAttribute('class', 'list_quest');
let li_q = document.createElement('li');
li_q.setAttribute('class', 'quest');
li_q.textContent = (i + 1) + '. ' + q.query + ':';
ul.appendChild(li_q);
for (let j = 0; j < q.answer.length; j++) {
let a = q.answer[j];
let li_a = document.createElement('li');
li_a.setAttribute('class', 'answer');
let ch = document.createElement('input');
ch.setAttribute('type', 'checkbox');
ch.value = a.value;
ch.onchange = ch.onclick = calc;
a.input = ch;
let lb = document.createElement('label');
let d_c = document.createElement('div');
d_c.setAttribute('class', 'ch_box');
d_c.appendChild(ch);
let d_t = document.createElement('div');
d_t.setAttribute('class', 'text_box');
d_t.textContent = a.text;
lb.appendChild(d_c);
lb.appendChild(d_t);
li_a.appendChild(lb);
ul.appendChild(li_a);
}
document.getElementById('questions').appendChild(ul);
}
document.getElementById('clear').onclick = reset;
calc();
/* CALCULATION */
function calc() {
let result = 0;
for (let i = 0; i < qs.length; i++) {
let q = qs[i];
let s = 0;
let c = 0;
for (let j = 0; j < q.answer.length; j++) {
let a = q.answer[j];
if (a.input.checked) {
c++;
s += a.input.value * 1;
console.log(i, j, c, s)
}
}
if (c > 0) result += s / c;
}
document.getElementById('result').textContent = result + '%';
}
/* RESET */
function reset() {
for (let i = 0; i < qs.length; i++) {
let q = qs[i];
for (let j = 0; j < q.answer.length; j++) {
let a = q.answer[j];
a.input.checked = false
}
}
calc();
}
</script>
</body>
</html>