0
출력 결과에 문제가 있습니다. 내가 뭘 하려는지 "편집 할 수있는"클래스 이름 가진 모든 태그 요소를 "클릭하십시오"이벤트 수신기가 있고 해당 요소를 클릭하면 옵션 편집 슬라이드 바가 나타납니다. 요소 중 하나를 클릭하고 innerHTML 텍스트를 편집하면 문제가됩니다. 두 번째 요소를 클릭하고 두 번째 요소를 편집하려고하면 두 요소가 모두 변경됩니다. 첫 번째 요소가 변경되지 않도록하려면 어떻게해야합니까?addEventListener에서 배열의 요소를 건너 뛰는 방법 javascript?
미리 감사드립니다.
var elements = document.querySelectorAll(".editable");
var sidebar = document.querySelector(".sidebar");
var content = document.querySelector(".content");
elements.forEach(function(element){
element.addEventListener('click', function(e){
sidebar.style.display = "block";
content.style.marginLeft = "300px";
const form = document.forms['change-text'];
form.addEventListener('submit', function(eve){
eve.preventDefault();
const value = form.querySelector('input[type="text"]').value;
element.innerHTML = value;
});
},true);
});
html,body{
margin: 0;
}
.editable:hover{
border: 1px dashed #ccc;
}
.sidebar {
position: fixed;
width: 300px;
height: 100%;
background: #ccc;
padding: 20px;
box-sizing: border-box;
display: none;
transition: 1s;
}
.content {
margin-left: 0px;
height: auto;
width: auto;
position: relative;
overflow: auto;
z-index: 1;
padding: 20px;
box-sizing: border-box;
}
.info {
width: auto;
height: auto;
position: relative;
}
<body>
<div class="sidebar">
<p>Enter text here:</p>
<form id="change-text">
<input type="text" placeholder="Change text">
<button>Save</button>
</form>
</div>
<div class="content">
<div class="info">
<h1 class="editable">Title</h1>
<p class="editable">Subtitle</p>
</div>
</div>
</body>