Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 25

Нужно выводить в форму выбранные ответы которые заносятся и хранятся в массиве

05.05.2022, 11:08. Показов 925. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте пишу диплом, электронный учебник сайт, возникла проблема с выведением выбранных ответов в форму,
проблема на 55 строке кода(выделил комментарием), я не знаю как взять значение из массива yourAns. Будьте так любезны разъяснить , и найти решение проблемы. здесь в тесте три вопроса но потом будет порядка двух сотен.


PHP/HTML
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
<body>
<style>
    span.quest {font-weight: bold;}
    label {margin-left: 15px;}
    .nav {font-size: 17px;}
</style>
<div style="border: 2px solid blue; padding: 10px; overflow:auto;">
    <div style="display:flex; justify-content: space-between;">
        <a href="#Общий файл с содержанием#" class="nav">Оглавление</a>
        <a href="#Имя предыдущего файла#" class="nav">На предыдущую</a>
    </div>
<script>
// Заголовок страницы (h2)
var title = 'Срез по первому блоку';
// Подзаголовок (h3)
var subtitle = "Этот тест позволяет оценить Ваши знания";
// Это ваши вопросы
var questions=[
{
    text: "Эстетический идеал выступает как:",
    answers: ["тенденция  развития искусства",
          "тенденция общественного развития",
          "тенденция правящих групп"],
     correctAnswer: 1// нумерация ответов с нуля!
},
{
    text: "Эстетические чувства:",
    answers: ["даются человеку от  рождения",
          "формируются в первые 3-4 года жизни",
          "наличествуют не  у всех людей, а развиваются индивидуально"],
    correctAnswer: 1
},
{
    text: "Символ есть:",
    answers: ["образ, видоизмененный переживанием",
          "отражение личных представлений художника",
          "образ - точная копия окружающей действительности"],
    correctAnswer: 0
}
];
 
var yourAns = new Array;
var score = 0;
 
function Engine(question, answer) {yourAns[question]=answer;}
 
function Score(){
   var answerText = "Результаты:\n";
   for(var i = 0; i < yourAns.length; ++i){
    var num = i+1;
    answerText=answerText+ question.text + num +"";
    if(yourAns[i]!=0){
      
        answerText=answerText+
        questions[i].answers[questions[i].yourAns[i]] + "\n"; //здесь проблема
 
 
      }
         
        
       }
 
   answerText=answerText+"\nВсего правильных ответов: "+score+"\n";
 
   alert(answerText);
   yourAns = [];
   score = 0;
   clearForm("quiz");
}
function clearForm(name) {
   var f = document.forms[name];
   for(var i = 0; i < f.elements.length; ++i) {
    if(f.elements[i].checked)
        f.elements[i].checked = false;
}
}
</script>
<h2><script>document.write(title)</script></h2>
<h3><script>document.write(subtitle)</script></h3>
 
    <form name="quiz">
    <ol>
        <script>
        for(var q=0; q<questions.length; ++q) {
           var question = questions[q];
           var idx = 1 + q;
 
           document.writeln('<li><span class="quest">' + question.text + '</span><br>');
           for(var i in question.answers) {
            document.writeln('<label><input type=radio name="q' + idx + '" value="' + i +
            '" onClick="Engine(' + q + ', this.value)"> ' + question.answers[i] + '</label><br>');
        }
            document.writeln('</li>');
        }
        </script>
    </ol>
        <br>
        <input type="button" onClick="Score()" value="Проверить результаты">
    </form>
    <p><a href="#Имя предыдущего файла#" class="nav">На следующую</a></p>
</div>
</body>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2022, 11:08
Ответы с готовыми решениями:

Вопросы записаны в TStringGrid. Нужно выводить ответы в TEdit.
мне нужно создать три вопроса StringGrid вот я их создал procedure TForm2.FormActivate(Sender: TObject); begin ...

Есть текстовый файл с вопросами и ответами.Нужно выводить на экран 1вопрос и ответы на 1вопрос
Есть текстовый файл с вопросами и ответами.Нужно выводить на экран 1вопрос и ответы на 1вопрос.После того как юзер ответил на 1 вопрос...

Тест ПДД: выбранные ответы из RadioGroup1 записывать в БД
Пишу тестер по пдд на Делфи не могу сделать чтобы выбранные ответ из RadioGroup1 записывались в акцесс

5
Философ-разговорник
 Аватар для Padonak
1066 / 391 / 120
Регистрация: 20.02.2016
Сообщений: 884
Записей в блоге: 1
05.05.2022, 13:39
PHP/HTML
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
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>XZ</title>
   <style>
    span.quest{font-weight: bold;}
    label{margin-left: 15px;}
    .nav{font-size: 17px;}
    .div1{border: 2px solid blue; padding: 10px; overflow:auto;}
    .div2{display:flex; justify-content: space-between;}
    label{display: block;}
    [type=button],[type=reset]{cursor: pointer;}
    [type=reset]{margin-left: 30px;}
  </style>
<script>
const title = 'Срез по первому блоку',
      subtitle = "Этот тест позволяет оценить Ваши знания";
 
let questions = [
{
    text: "Эстетический идеал выступает как:",
    answers: ["тенденция  развития искусства",
          "тенденция общественного развития",
          "тенденция правящих групп"],
     correctAnswer: 1// нумерация ответов с нуля!
},
{
    text: "Эстетические чувства:",
    answers: ["даются человеку от  рождения",
          "формируются в первые 3-4 года жизни",
          "наличествуют не  у всех людей, а развиваются индивидуально"],
    correctAnswer: 1
},
{
    text: "Символ есть:",
    answers: ["образ, видоизмененный переживанием",
          "отражение личных представлений художника",
          "образ - точная копия окружающей действительности"],
    correctAnswer: 0
}
];
 
onload = function(){
 document.querySelector('h2').innerHTML = title;
 document.querySelector('h3').innerHTML = subtitle;
 
 for(let i = 0;  i < questions.length; i++){
    let curr = questions[i],
        vars = curr.answers,
        str = '<span class="quest">' + curr.text + '</span>';
     
     for(let k = 0; k < vars.length; k++){
       str += '<label><input type="radio" name="q_' + i + '" value="' + k + '" />' + vars[k] + '</label>';
     }
     
    let li = document.querySelector('ol').appendChild(document.createElement('li'));
        li.innerHTML = str;
  }
  
  document.querySelector('#checkme').onclick = function(){
    let Result = '',
        solved = document.querySelectorAll(':checked'),
        lilen = document.querySelectorAll('li').length;
        
        if(solved.length < lilen){
         Result = 'Вы ответили не на все вопросы!';
         alert(Result);
         return;
        }else{
          let corrects = 0;
         for(let n = 0; n < solved.length; n++){
          let iscorrect = solved[n].value == questions[n].correctAnswer ? 'Верный' : 'Неверный';
          corrects += solved[n].value == questions[n].correctAnswer ? 1 : 0;
          Result += n > 0 ? '\n' : '';
          Result += 'Вопрос ' + (n + 1) + '. Ответ ' + iscorrect;
         }
         alert(Result + '\n--------\nПравильных ответов: ' + corrects + ' из ' + questions.length);
        }
    
  }
}
</script>
<body>
    <div class="div1">
      <div class="div2">
        <a href="#null" class="nav">Оглавление</a>
        <a href="#null" class="nav">На предыдущую</a>
      </div>
    <h2></h2>
    <h3></h3>
    <form name="quiz">
       <ol>
       </ol>
      <br />
     <input type="button" id="checkme" value="Проверить результаты" /> <input type="reset" value="Очистить форму" />
    </form>
    <p><a href="#null" class="nav">На следующую</a></p>
    </div>
</body>
<html>
1
0 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 25
05.05.2022, 16:21  [ТС]
Padonak, Мужчина вы видно меня не поняли , все что вы расписали можно сделать гораздо проще и я вас не осуждаю, и это решение у меня есть
PHP/HTML
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
<style>
    span.quest {font-weight: bold;}
    label {margin-left: 15px;}
    .nav {font-size: 17px;}
</style>
<div style="border: 2px solid blue; padding: 10px; overflow:auto;">
    <div style="display:flex; justify-content: space-between;">
        <a href="#Общий файл с содержанием#" class="nav">Оглавление</a>
        <a href="#Имя предыдущего файла#" class="nav">На предыдущую</a>
    </div>
<script>
// Заголовок страницы (h2)
var title = 'Срез по первому блоку';
// Подзаголовок (h3)
var subtitle = "Этот тест позволяет оценить Ваши знания";
// Это ваши вопросы
var questions=[
{
    text: "Эстетический идеал выступает как:",
    answers: ["тенденция  развития искусства",
          "тенденция общественного развития",
          "тенденция правящих групп"],
    correctAnswer: 0 // нумерация ответов с нуля!
},
{
    text: "Эстетические чувства:",
    answers: ["даются человеку от  рождения",
          "формируются в первые 3-4 года жизни",
          "наличествуют не  у всех людей, а развиваются индивидуально"],
    correctAnswer: 1
},
{
    text: "Символ есть:",
    answers: ["образ, видоизмененный переживанием",
          "отражение личных представлений художника",
          "образ - точная копия окружающей действительности"],
    correctAnswer: 0
}
];
 
var yourAns = new Array;
var score = 0;
 
function Engine(question, answer) {yourAns[question]=answer;}
 
function Score(){
   var answerText = "Результаты:\n";
   for(var i = 0; i < yourAns.length; ++i){
    var num = i+1;
    answerText=answerText+"\n    Вопрос №"+ num +"";
    if(yourAns[i]!=questions[i].correctAnswer){
        answerText=answerText+"\n    Правильный ответ: " +
        questions[i].answers[questions[i].correctAnswer] + "\n";
      }
        else{
        answerText=answerText+": Верно! \n";
        ++score;
        }
       }
 
   answerText=answerText+"\nВсего правильных ответов: "+score+"\n";
 
   alert(answerText);
   yourAns = [];
   score = 0;
   clearForm("quiz");
}
function clearForm(name) {
   var f = document.forms[name];
   for(var i = 0; i < f.elements.length; ++i) {
    if(f.elements[i].checked)
        f.elements[i].checked = false;
}
}
</script>
<h2><script>document.write(title)</script></h2>
<h3><script>document.write(subtitle)</script></h3>
 
    <form name="quiz">
    <ol>
        <script>
        for(var q=0; q<questions.length; ++q) {
           var question = questions[q];
           var idx = 1 + q;
 
           document.writeln('<li><span class="quest">' + question.text + '</span><br>');
           for(var i in question.answers) {
            document.writeln('<label><input type=radio name="q' + idx + '" value="' + i +
            '" onClick="Engine(' + q + ', this.value)"> ' + question.answers[i] + '</label><br>');
        }
            document.writeln('</li>');
        }
        </script>
    </ol>
        <br>
        <input type="button" onClick="Score()" value="Проверить результаты">
    </form>
    <p><a href="#Имя предыдущего файла#" class="nav">На следующую</a></p>
</div>
А я бы хотел чтоб в форму выводился вопрос и именно текст выбранного(именно выбранного а не правильного на переменную correctanswer не нужна обращать внимания) ответа, каким образом это можно реализовать я не понимаю.
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
05.05.2022, 17:05
Лучший ответ Сообщение было отмечено Itachi44 как решение

Решение

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
  document.querySelector('#checkme').onclick = function(){
    let Result = '',
        solved = document.querySelectorAll(':checked'),
        lilen = document.querySelectorAll('li').length;
        
        if(solved.length < lilen){
         Result = 'Вы ответили не на все вопросы!';
         alert(Result);
         return;
        }else{
          let corrects = 0;
         for(let n = 0; n < solved.length; n++){
          let iscorrect = solved[n].value == questions[n].correctAnswer ? 'Верный' : 'Неверный';
          corrects += solved[n].value == questions[n].correctAnswer ? 1 : 0;
          Result += n > 0 ? '\n' : '';
          Result += 'Вопрос ' + (n + 1) + ": " + questions[n].text + '\nОтвет: ' + 
            questions[n].answers[solved[n].value] + "\n" + iscorrect;
         }
         alert(Result + '\n--------\nПравильных ответов: ' + corrects + ' из ' + questions.length);
        }
    
  }
...
3
Философ-разговорник
 Аватар для Padonak
1066 / 391 / 120
Регистрация: 20.02.2016
Сообщений: 884
Записей в блоге: 1
05.05.2022, 17:21
Да-да, всё можно сделать намного проще. Я так и подумал, увидев в вашем коде вот это:

HTML5
1
2
<h2><script>document.write(title)</script></h2>
<h3><script>document.write(subtitle)</script></h3>
0
0 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 25
07.05.2022, 10:53  [ТС]
Спасибо добрый человек, а теперь я могу узнать можно ли выводить это на новое окно или же новую страницу в браузере а не в форму? Если да то как реализовать

Добавлено через 1 час 30 минут
Tavashi, оказывается на форму выводится только 8 вопросов

Добавлено через 18 минут
или же вывести как то в блок на этой же странице скрывая все вопросы с ответами, и выводить div всё что должно быть на форме? Подскажите пожалуйста как легче всего реализовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2022, 10:53
Помогаю со студенческими работами здесь

Отыскать и вывести минимальное значение среди переменных, указатели на которые хранятся в массиве
Не могу понять как мне заполнить массив указателей с клавиатуры. Есть такое задание: В одномерном массиве (типа T) указателей на...

Натуральное число в p - и системе счисления заданное собственными цифрами, которые хранятся в массиве K (n)
Натуральное число в p - и системе счисления заданное собственными цифрами, которые хранятся в массиве K (n). Проверить корректность такого...

Натуральное число в p - и системе счисления задано собственными цифрами, которые хранятся в массиве K (n). Проверить кор
Натуральное число в p - и системе счисления задано собственными цифрами, которые хранятся в массиве K (n). Проверить корректность такого ...

Где хранятся ответы теста VBA
Здравствуйте. Хотел вот, что узнать: имеется работа в эксель, после того, как сделал ее, нужно пройти тест в VBA, так вот, к самой сути...

В массиве хранятся данные об учениках класса: школа, фамилия, класс. Вывести список учеников, которые участся в девятом классе
Помогите пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru