아래와 같이 모달창이 열리고 닫기 버튼 누르면 닫히게 자바스크립트를 넣었습니다.
모달이 열리는 것은 문제가 없는데, 모달 닫기할 때, 버튼을 클릭하면,
function closeDetailModal(index) 이 함수가 실행되게 해놧습니다.
이 함수 내에서 console.log 등을 확인 해봐도 index 값을 받아오거나 , 다른 element를 선택한다거사 하는 것은 정상적으로 됩니다. 그런데, element 선택해서 display none 처리 하는게 안되네요.
조언 좀 부탁드립니다. ㅠ
Copy
const designCode = document.querySelectorAll('.mmnco_tem_list_inner');
const designPreviewBnt = document.querySelectorAll('.mmnco_preview_bnt');
const designCodeModal = document.querySelector('#mmnco_decode_modal');
const decodeInfo = document.querySelectorAll('.mmnco_decode_info');
const closeDecoBnt = document.querySelectorAll('.mmnco_decode_info_close');
function openDetailModal(index) {
designCodeModal.style.display = 'block';
decodeInfo[index].style.display = 'block';
document.querySelector('body').classList.add('scrol_hidden');
};
function closeDetailModal(index) {
console.log(decodeInfo[index]);
decodeInfo[index].style.display = 'none'; //이 부분이 실행이 안됩니다.
designCodeModal.style.display = 'none'; //이 부분이 실행이 안됩니다.
// document.querySelector('body').classList.remove('scrol_hidden');
}
for (let m = 0; m < designCode.length; m++) {
(function () {
designCode[m].addEventListener('click', function() { openDetailModal(m); } );
closeDecoBnt[m].addEventListener('click', function() {
closeDetailModal(m); //현재 이녀석이 문제
});
designPreviewBnt[m].addEventListener('click', function(e){ e.stopPropagation(); });
}()); // immediate invocation
}
답변 1개 / 댓글 3개
채택된 답변
+20 포인트
2020-12-10 (목) 11:29:56
display = none 이 화면에 안보이려고 하시는 거죠?
동작하지 않는게 아니라 css 에의해 동작하지 않는것처럼 보이는게 아닐까 싶습니다.
해당 dom 을 확인해보세요
답변에 대한 댓글 3개
JinyeongJang
2020-12-10 (목) 12:06:12
이상하네요. 그 함수 내에서는 자바스크립트로 스타일 변경이 하나도 안되네요. 클래스로 조정하려고도 해봤는데요. classList.add('active') 로 클래스 추가는 되는데, 또 classList.remove('active')는 안됩니다..ㅠ
JinyeongJang
2020-12-10 (목) 14:13:58
아 해결됐습니다. html 에서 closeDecoBnt 이 decodeInfo 안에 위치해 있어, 이벤트가 상속되어 이중으로 걸렸었네요. 고맙습니다.
답변을 작성하려면 로그인이 필요합니다.