댓글 등록 버튼으로 생성한 댓글들에 버튼 기능이 제대로 작동하지 않습니다ㅜ 채택완료
오늘은 비가 생각보다 오랫동안 오네요... 좀만하고 자려했는데
문제가 생겨 5시간동안 붙잡고 있는데 도저히 감이 안잡혀서 고수님들께 팁을 얻고자 질문남깁니다
먼제 제가 댓글 등록 버튼 하나를 놓고
그 버튼을 클릭하면 로그인한 계정의 업체명과 클릭하면 정보를 볼수 있는 버튼이 등록됩니다
그러한 댓글들을 여러계정으로 생성하면 view_comment에서는 업체명이 보이는데
문제는 각각 생성된 버튼들을 클릭했을때 자바스크립트로 팝업 호출되게끔 해놓았는데
맨처음 생성한 업체의 정보만 나옵니다...
두번째,세번째,네번째....등 버튼을 눌러도 처음 등록한 업체 정보만 나오는데 버튼을 for문 돌려봐도 안되고..
코드한번만 살펴봐주시고 팁 좀 부탁드리겠습니다 고수님들
댓글 남겨주실 모든 분들께 미리 감사합니다
--------------------------------
view_comment.skin.php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css" integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
// 글자수 제한
var char_min = parseInt(); // 최소
var char_max = parseInt(); // 최대
댓글목록
$cmt_amt = count($list);
for ($i=0; $i<$cmt_amt; $i++) {
$comment_id = $list[$i]['wr_id'];
$cmt_depth = strlen($list[$i]['wr_comment_reply']) * 50;
$comment = $list[$i]['content'];
$mb = get_member($list[$i]['mb_id']);
/*
if (strstr($list[$i]['wr_option'], "secret")) {
$str = $str;
}
*/
$comment = preg_replace("/\[\\]/i", "", $comment);
$cmt_sv = $cmt_amt - $i + 1; // 댓글 헤더 z-index 재설정 ie8 이하 사이드뷰 겹침 문제 해결
$c_reply_href = $comment_common_url.'&c_id='.$comment_id.'&w=c#bo_vc_w';
$c_edit_href = $comment_common_url.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;
?>
조명 업체 등록 현황
님의 댓글의 댓글
작성일
include(G5_SNS_PATH.'/view_comment_list.sns.skin.php');
?>
if($w == 'cu') {
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
$cmt = sql_fetch($sql);
if (isset($cmt)) {
if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id']))) {
$cmt['wr_content'] = '';
}
$c_wr_content = $cmt['wr_content'];
}
}
?>
" id="secret_comment_">
$(function() {
// 댓글 옵션창 열기
$(".btn_cm_opt").on("click", function(){
$(this).parent("div").children(".bo_vc_act").show();
});
// 댓글 옵션창 닫기
$(document).mouseup(function (e){
var container = $(".bo_vc_act");
if( container.has(e.target).length === 0)
container.hide();
});
});
if($w == '')
$w = 'c';
?>
댓글쓰기
var save_before = '';
var save_html = document.getElementById('bo_vc_w').innerHTML;
function good_and_write()
{
var f = document.fviewcomment;
if (fviewcomment_submit(f)) {
f.is_good.value = 1;
f.submit();
} else {
f.is_good.value = 0;
}
}
function fviewcomment_submit(f)
{
var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
f.is_good.value = 0;
var subject = "";
var content = "";
$.ajax({
url: g5_bbs_url+"/ajax.filter.php",
type: "POST",
data: {
"subject": "",
"content": f.wr_content.value
},
dataType: "json",
async: false,
cache: false,
success: function(data, textStatus) {
subject = data.subject;
content = data.content;
}
});
set_comment_token(f);
document.getElementById("btn_submit").disabled = "disabled";
return true;
}
function comment_box(comment_id, work)
{
var el_id,
form_el = 'fviewcomment',
respond = document.getElementById(form_el);
// 댓글 아이디가 넘어오면 답변, 수정
if (comment_id)
{
if (work == 'c')
el_id = 'reply_' + comment_id;
else
el_id = 'edit_' + comment_id;
}
else
el_id = 'bo_vc_w';
if (save_before != el_id)
{
if (save_before)
{
document.getElementById(save_before).style.display = 'none';
}
document.getElementById(el_id).style.display = '';
document.getElementById(el_id).appendChild(respond);
//입력값 초기화
document.getElementById('wr_content').value = '';
// 댓글 수정
if (work == 'cu')
{
document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
if (typeof char_count != 'undefined')
check_byte('wr_content', 'char_count');
if (document.getElementById('secret_comment_'+comment_id).value)
document.getElementById('wr_secret').checked = true;
else
document.getElementById('wr_secret').checked = false;
}
document.getElementById('comment_id').value = comment_id;
document.getElementById('w').value = work;
if(save_before)
$("#captcha_reload").trigger("click");
save_before = el_id;
}
}
function comment_delete()
{
return confirm("이 댓글을 삭제하시겠습니까?");
}
comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서 추가 (root님)
$(function() {
// sns 등록
$("#bo_vc_send_sns").load(
"/view_comment_write.sns.skin.php?bo_table=",
function() {
save_html = document.getElementById('bo_vc_w').innerHTML;
}
);
});
jQuery(function($) {
//댓글열기
$(".cmt_btn").click(function(e){
e.preventDefault();
$(this).toggleClass("cmt_btn_op");
$("#bo_vc").toggle();
});
});
const brandBtn = document.querySelectorAll(".brand_info");
const popup = document.querySelector(".popup_wrap");
const closePopup = document.getElementById("close1");
const blackBackColor2 = document.querySelector(".backg2");
for(let i=0; i brandBtn[i].addEventListener('click', ()=>{ if(popup.style.display === "none"){ popup.style.display = "block"; blackBackColor2.style.display ="block"; } else { popup.style.display = "none"; } }); } function offPopup(){ popup.style.display = "none"; blackBackColor2.style.display ="none"; } closePopup.addEventListener("click", offPopup); function offPopupBack(){ popup.style.display = "none"; blackBackColor2.style.display ="none"; } blackBackColor2.addEventListener("click", offPopupBack);
답변 3개
php 에서 루프로 복수개의 엘리먼트를 생성하는데
버튼을 제외한 나머지 제어는 단수 형태로 해서 발생하는 문제 같습니다.
간략하게 동작 부분만 재구성한 소스입니다.
</p>
<p><style>
.popup_wrap {
display: none;
position: absolute;
top: 20%;
left: 20%;
width: 10em;
height: 10em;
}
.backg2 {
background-color: #000;
width: 100%;
height: 100%;
color: #fff;
}
.close1 {
position: absolute;
top: 0;
right: 0.5em;
color: #fff;
cursor: pointer;
}
</style></p>
<p><button class="brand_info">a</button>
<div class="popup_wrap" style="left: 20%; top: 20%;">
<div class="backg2">aa</div>
<span class="close1">x (a)</span>
</div></p>
<p><button class="brand_info">b</button>
<div class="popup_wrap" style="left: 30%; top: 30%;">
<div class="backg2">bb</div>
<span class="close1">x (b)</span>
</div></p>
<p><button class="brand_info">c</button>
<div class="popup_wrap" style="left: 40%; top: 40%;">
<div class="backg2">cc</div>
<span class="close1">x (c)</span>
</div></p>
<p><button class="brand_info">d</button>
<div class="popup_wrap" style="left: 50%; top: 50%;">
<div class="backg2">dd</div>
<span class="close1">x (d)</span>
</div></p>
<p><script>
const brandBtn = document.querySelectorAll(".brand_info");
const popup = document.querySelectorAll(".popup_wrap");
const closePopup = document.querySelectorAll(".close1");
const blackBackColor2 = document.querySelectorAll(".backg2");</p>
<p>function toggle_popup(i) {
if(popup[i].style.display != "block"){
popup[i].style.display = "block";
blackBackColor2[i].style.display ="block";
} else {
popup[i].style.display = "none";
}
}</p>
<p>function close_popup_back(i) {
popup[i].style.display = "none";
blackBackColor2[i].style.display ="none";
}</p>
<p>if (brandBtn.length == popup.length && popup.length == closePopup.length && closePopup.length == blackBackColor2.length) {
for(let i=0; i<brandBtn.length; i++) {
brandBtn[i].addEventListener('click', ()=>{
toggle_popup(i);
});
closePopup[i].addEventListener('click', ()=>{
close_popup_back(i);
});
blackBackColor2[i].addEventListener('click', ()=>{
close_popup_back(i);
});
}
}</p>
<p>// closePopup.addEventListener("click", offPopup);
// blackBackColor2.addEventListener("click", offPopupBack);
</script></p>
<p>
답변에 대한 댓글 2개
다시 한번 감사합니다~
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p><script src="<a href="https://code.jquery.com/jquery-1.12.4.min.js"></script>" target="_blank" rel="noopener noreferrer">https://code.jquery.com/jquery-1.12.4.min.js"></script></a></p>
<p><button type="button" class="btn_cm_opt"><span class="sound_only">댓글 옵션1</span></button>
<div id="company0" style="display:none;">111111111111<button type="button" class="close">닫기</button></div>
<button type="button" class="btn_cm_opt"><span class="sound_only">댓글 옵션2</span></button>
<div id="company1" style="display:none;">222222222222<button type="button" class="close">닫기</button></div>
<button type="button" class="btn_cm_opt"><span class="sound_only">댓글 옵션3</span></button>
<div id="company2" style="display:none;">333333333333<button type="button" class="close">닫기</button></div>
<button type="button" class="btn_cm_opt"><span class="sound_only">댓글 옵션4</span></button>
<div id="company3" style="display:none;">444444444444<button type="button" class="close">닫기</button></div>
<button type="button" class="btn_cm_opt"><span class="sound_only">댓글 옵션5</span></button>
<div id="company4" style="display:none;">5555555555<button type="button" class="close">닫기</button></div></p>
<p>
<script>
$(document).ready(function(){
$('.btn_cm_opt').each(function(i){
$(this).click(function(e){
$('#company'+i).css('display', 'block');
});
});
$('.close').each(function(i){
$(this).click(function(e){
$('#company'+i).css('display', 'none');
});
});
});
</script></p>
<p>
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인