Я бы сделал ниже:
let currentEditingNode;
const defaultEditingNodeContent = document.getElementById('div-editor').innerHTML;
window.makeDivEditable = function makeDivEditable(e = window.event){
var divContent = (e.target || e.srcElement).parentElement;
var divEditor = document.getElementById('div-editor');
divEditor.innerHTML = divContent.innerHTML;
divEditor.contentEditable = true;
currentEditingNode = divContent;
}
window.submitEdit = function submitEdit() {
if (currentEditingNode) {
var divEditor = document.getElementById('div-editor');
currentEditingNode.innerHTML = divEditor.innerHTML;
divEditor.contentEditable = false;
divEditor.innerHTML = defaultEditingNodeContent;
}
}
<div id="div-editor">
<h1>Title of div to be edited goes here</h1>
<p>Paragraph of div to be edited goes here</p>
</div>
<button id="submit-edit" onclick="submitEdit()">submit edit</button>
<div class="div-content" onclick="makeDivEditable(event)">
<h1>Div one title</h1>
<p>Copy the content of div ONE and make it editable in the div editor</p>
</div>
<div class="div-content" onclick="makeDivEditable(event)">
<h1>Div two title</h1>
<p>Copy the content of div TWO and make it editable in the div editor</p>
</div>
<div class="div-content" onclick="makeDivEditable(event)">
<h1>Div three</h1>
<p>Copy the content of div THREE and make it editable in the div editor</p>
</div>
<div class="div-content" onclick="makeDivEditable(event)">
<h1>Div four title</h1>
<p>Copy the content of div FOUR and make it editable in the div editor</p>
</div>
Вы можете поиграть с ним!
Обратите внимание, что я передаю event
встроенным обработчикам событий, которые содержат выбранный целевой элемент . Поскольку вы хотите отредактировать весь родительский div, мне нужно было выбрать предка элемента, по которому щелкнули мышью. Обратите внимание: возможно, что элемент, возвращенный в event
, может быть чем-то другим. Чтобы быть идеальным, я бы проверил, соответствует ли имя класса div-content
(e.target || e.srcElement).parentElement
перед копированием содержимого