Вероятно, было бы лучше поместить элемент ввода средства выбора цвета в HTML в начале, чтобы вы могли выбрать его на верхнем уровне без переназначения.Когда форма будет отправлена, сделайте ее видимой.Затем, по щелчку, просто откройте value
этого элемента и присвойте его свойству background
:
const colorInput = document.querySelector('input[type="color"]');
canvas.addEventListener('click', function(e) {
e.target.style.background = colorInput.value;
});
const canvas = document.querySelector('#pixelCanvas')
const tbody = document.createElement('tbody');
const colorInput = document.querySelector('input[type="color"]');
canvas.addEventListener('click', function(e) {
e.target.style.background = colorInput.value;
});
canvas.addEventListener('dblclick', function(e) {
e.target.style.backgroundColor = 'white';
});
const column = document.getElementById('column');
const row = document.getElementById('row');
const submitForm = document.querySelector('#submitForm');
submitForm.addEventListener('submit', function(e) {
e.preventDefault(); // Prevents the submit button from refreshing the page by default
colorInput.style.display = 'inline';
tbody.innerHTML = "";
// Generate grid
for (r = 0; r < row.value; r++) {
const tr = document.createElement('tr');
tbody.appendChild(tr);
for (c = 0; c < column.value; c++) {
const td = document.createElement('td');
tr.appendChild(td);
}
canvas.appendChild(tbody);
}
});
/**
* index.scss
* - Add any styles you want here!
*/
body {
background: #f5f5f5;
}
table,
thead,
tbody,
tfoot,
tr,
td {
border-collapse: collapse;
border: 3px solid black;
}
td {
width: 30px;
}
tr {
height: 30px;
}
input[type="color"] {
display: none;
}
<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>
<br>
<div>
<table id="pixelCanvas">
<!-- Dynamic pixel canvas -->
</table>
</div>
<div>
<input type="color" value="#e66465" />
</div>