Что я пытаюсь построить:
Я пытаюсь создать Pixel Art Maker, который, по сути, представляет собой пустую сетку определенного пользователем размера, и цвет каждого поля в сетке изменяется при нажатии на нее.
Проблема:
Мне удалось выяснить изменение цвета, но я не могу заставить таблицу появляться вообще.
Я уже смотрел на создание динамической таблицы на основе пользовательского ввода
кажется, это самая близкая вещь, которую я могу найти к тому, чего я пытаюсь достичь. Есть логика, аналогичная таблицам, но я слишком неопытен, чтобы понять разницу между этим кодом и моим.
Codepen:
Кодовая ссылка
А вот мой фрагмент кода:
const canvas = document.querySelector('#pixelCanvas')
const tbody = document.createElement('tbody');
canvas.addEventListener('click', function(e) {
e.target.style.background = 'black';
});
canvas.addEventListener('dblclick', function(e) {
e.target.style.backgroundColor = 'white';
});
// Store the value of columns
const column = document.getElementById('column').value;
// Store the value of rows
const row = document.getElementById('row').value;
// Access forms
const submitForm = document.querySelector('#submitForm');
submitForm.addEventListener('submit', function(e) {
e.preventDefault(); // Prevents the submit button from refreshing the page by default
debugger;
for (r = 0; r < row; r++) {
const tr = document.createElement('tr');
tbody.appendChild(tr);
for (c = 0; c < column; c++) {
const td = document.createElement('td');
tr.appendChild(td);
}
canvas.appendChild(tbody);
}
});
<h1>Pixel Art Maker</h1>
<fieldset>
<legend>Grid Size</legend>
<form id='submitForm'>
<label for="height">Columns:</label>
<input type="number" id="column" placeholder="Key in an integer" step="1" />
<label for="width">Rows:</label>
<input type="number" id="row" placeholder="Min: 1, max: 100" min="1" max="100" />
<div>
<input type="submit" id="submit" value="Submit" />
</div>
</form>
</fieldset>
<br>
<div>
<table id="pixelCanvas">
<!-- Dynamic pixel canvas -->
</table>
</div>