-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
122 lines (102 loc) · 4.02 KB
/
Copy pathmain.js
File metadata and controls
122 lines (102 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
const questions = [
{
questionName: 'question 1',
answers: ['answer 1', 'answer 2', 'answer 3'],
correctAnswers: [1]
},
{
questionName: 'question 2',
answers: ['answer 1', 'answer 2', 'answer 3'],
correctAnswers: [2]
},
{
questionName: 'question 3',
answers: ['answer 1', 'answer 2', 'answer 3'],
correctAnswers: [1, 2]
}
];
const app = {
questions,
testName: 'Тест по программированию',
render() {
const main = this.newEl('main');
const testName = this.newEl('h1');
testName.textContent = this.testName;
const questionsList = this.newEl('ol');
const button = this.newEl('button');
button.setAttribute('type', 'submit');
button.textContent= 'Проверить результаты';
button.onclick = function(){//изменяем заголовок у второго вопроса
//console.log('clicked');
//questionsList.children[1].children[0].textContent = 'Вопрос 9999';
if (questionsList.children[1].children[0].textContent == 'Вопрос 9999') {
questionsList.children[1].children[0].textContent = 'Вопрос 2';
} else {
questionsList.children[1].children[0].textContent = 'Вопрос 9999';
};
console.log(questionsList.children[1].children[1].children[0].lastChild.checked);
let input = questionsList.children[1].children[1];
// по клику то чекед, то не чекед
input.children[0].firstElementChild.checked = !input.children[0].firstElementChild.checked;//toggle
input.children[2].firstElementChild.checked = !input.children[2].firstElementChild.checked;
for (let i = 0; i < questionsList.children.length; i++){
console.log(questionsList.children[i].children[1].children[1].firstElementChild);
questionsList.children[i].children[1].children[1].firstElementChild.checked;
}
console.dir(questionsList);
for (let i = 0; i < questionsList.children.length; i++){
let title = questionsList.children[i].firstElementChild;
console.log(title);
title.setAttribute('style', 'background: red')
}
let titles = document.querySelectorAll('h3');//это не массив, а коллекция элементов, у нее нет методов массивов
//только for-ом можно пройти
[...titles].forEach((item) => { //но вот так можно превратить ее в массив
item.setAttribute('style', 'background: green'); // и жизнь налаживается
})
/* for (let i = 0; i < titles.length; i++){ //ну или фором
let title = titles[i];
//console.log(title);
title.setAttribute('style', 'background: green')
}*/
}
/*s
*
* this.renderQuestions()
*
* */
this.questions.forEach(question => {
const li = this.newEl('li');
const questionHeader = this.newEl('h3');
questionHeader.textContent = question.questionName;
const answers = this.newEl('ul');
question.answers.forEach((answer, answerIndex) => {
answers.appendChild(this.renderAnswer(answer, answerIndex));
});
li.appendChild(questionHeader);
li.appendChild(answers);
questionsList.appendChild(li);
});
main.appendChild(testName);
main.appendChild(questionsList);
main.appendChild(button);
document.body.appendChild(main);
},
renderAnswer(answer, answerIndex) {
const li = this.newEl('li');
const label = this.newEl('label');
const uniqId = `uniq_${Math.random()}_${answerIndex}`;
label.setAttribute('for', uniqId);
label.textContent = answer;
const input = this.newEl('input');
input.setAttribute('type', 'checkbox');
input.setAttribute('id', uniqId);
li.appendChild(input);
li.appendChild(label);
return li;
},
newEl(elName) {
return document.createElement(elName);
}
};
app.render();