Подумайте об использовании stati c CSS вместо атрибутов - это резко уменьшает Javascript, необходимый для вашего сценария, и гораздо элегантнее.
Вы можете создать DOM, просто написав HTML разметку, что намного проще, чем много createElement
s / appendChild
s. Вставьте его в DOM, присвоив контейнеру innerHTML
. Затем выберите элементы внутри него, которым нужны значения с помощью querySelectorAll
, и назначьте их .value
свойства:
const cell = document.getElementById("rows").appendChild(document.createElement("div"));
cell.innerHTML = `
<div>
<div>
<textarea></textarea>
</div>
<div>
<input>
<input>
</div>
</div>
`;
const [textarea, dateinput, timeinput] = cell.querySelectorAll('textarea, input');
textarea.value = 'mission.text';
dateinput.value = 'mission.date';
timeinput.value = 'mission.time';
#rows > div {
display: table-cell;
}
#rows > div > div {
display: inline-block; width: 270px; height: 270px; background: url(yellowNote.jpg); background-repeat: no-repeat; background-size: cover;"
}
#rows textarea {
border: unset; background: unset; resize: unset; width: 80%; height: 60%; margin-top: 20px; margin-left: 17px; padding: 10px;
}
<div id="rows"></div>
Технически возможно вставить значения в разметку HTML вместо того, чтобы потом выбирать элементы и устанавливать их .value
, но это менее безопасно:
const cell = document.getElementById("rows").appendChild(document.createElement("div"));
cell.innerHTML = `
<div>
<div>
<textarea>${'mission.text'}</textarea>
</div>
<div>
<input value="${'mission.date'}">
<input value="${'mission.time'}">
</div>
</div>
`;
#rows > div {
display: table-cell;
}
#rows > div > div {
display: inline-block; width: 270px; height: 270px; background: url(yellowNote.jpg); background-repeat: no-repeat; background-size: cover;"
}
#rows textarea {
border: unset; background: unset; resize: unset; width: 80%; height: 60%; margin-top: 20px; margin-left: 17px; padding: 10px;
}
<div id="rows"></div>
Если значения не заслуживают доверия, это может привести к выполнению произвольного кода.