Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.06.2022, 14:02
Новичок на форуме
Отправить личное сообщение для igorzyden Посмотреть профиль Найти все сообщения от igorzyden
 
Регистрация: 23.02.2022
Сообщений: 7

Клонировать в HTML через Javascript примеры на умножение
Пока никак не могу освоить правильность работы клонирования в Javascript.

Сделал в HTML-файле код, который генерирует пример на умножение двух цифр от 1 до 10 и по нажатию кнопки "Проверить" выдает результат правильный ли ответ.

Код:
<head>

<title>Математические задания</title>

<meta charset="utf-8">

<style type="text/css">




    </style>

</head>


<body>

    <div class="primer">

        <span id="num1"></span> х
        <span id="num2"></span> =
        <input type="number" id="plus" width="5">
        <input type="button" onclick="count()" value="Проверить" width="5">
        <p id="result"></p>

    </div>

</body>

<script>


const random = n => Math.round(Math.random() * n);

var num1 = random(10);


var num2 = random(10);


document.getElementById('num1').innerHTML = num1;

document.getElementById('num2').innerHTML = num2;


sum = num1 * num2;



var right = 'Правильно';

var not = 'Неправильно';


function count() {
var plus = Number(document.getElementById('plus').value);

if (sum == plus) {

document.getElementById('result').innerHTML = right;

} else {

document.getElementById('result').innerHTML = not;

}

}


</script>

Теперь надо, чтобы выдавало допустим сразу 20 разных таких примеров и возле каждого индивидуальная кнопка проверки правильности.

При чем, сделать нужно не путем прописывания 20 раз части кода <div></div>, а через Javascript совершить правильно клонирование.
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2022, 14:58
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Проблема в том, что при клонировании будет повторяться одинаковый id,
а обработчики не клонируются.
Поэтому лучше действовать через class, а не id.
И сначала создать все объекты, а потом пройтись в цикле и все им задать

Как то так
<head>

<title>Математические задания</title>

<meta charset="utf-8">

<style type="text/css">
    </style>

</head>

<body>
    <div class="primer">
        <span class="num1"></span> х
        <span class="num2"></span> =
        <input type="number" class="plus" width="5">
        <input type="button" class="test" value="Проверить" width="5">
        <p class="result"></p>

    </div>

</body>

<script>
const right = 'Правильно';

const not = 'Неправильно';

function count() {
	const parent = this.closest('.primer');
	const plus = Number(parent.querySelector('.plus').value);
	const res = Number(parent.querySelector('.plus').dataset.res);
	parent.querySelector('.result').innerHTML = (res == plus)? right : not;
}

const orig = document.querySelector('.primer');

let num = 19;

while (num--) {
	const clone = orig.cloneNode(true);
	document.body.append(clone);
}

const random = n => Math.round(Math.random() * n);

document.querySelectorAll('.primer').forEach(pr => {
	const num1 = random(10);
	const num2 = random(10);
	pr.querySelector('.num1').innerHTML = num1;
	pr.querySelector('.num2').innerHTML = num2;
	pr.querySelector('.plus').dataset.res = num1 * num2;
	pr.querySelector('.test').onclick = count;
})
</script>
</body>
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2022, 15:20
Новичок на форуме
Отправить личное сообщение для igorzyden Посмотреть профиль Найти все сообщения от igorzyden
 
Регистрация: 23.02.2022
Сообщений: 7

Работает. Спасибо.
Заодно и подачу некоторых операторов в новом виде для себя вижу.
Жаль +1 к карме не позволяет добавить
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2022, 16:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075


https://javascript.ru/forum/misc/837...tml#post544234
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно подгрузить js файл через javascript alanat Общие вопросы Javascript 6 27.01.2020 11:03
Вывод ссылки через Javascript johny_torr Общие вопросы Javascript 5 08.12.2013 22:44
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Как с помощью JavaScript сохранить какие-либо изменения в HTML документе? FirstFrost Общие вопросы Javascript 1 15.07.2010 16:23
Обращение к именам, полученным через Javascript baal1988 Events/DOM/Window 1 31.08.2008 15:08