댓글창 하나 질문드려요 ㅠㅠㅠ 채택완료
</p>
<p>function comment_box(comment_id, work)
{
if(comment_id){
var btn_rpy = 'btn_reply_' + comment_id;
var btn_mod = 'btn_mod_' + comment_id;
if(work == 'cu'){
console.log('수정열림');
document.getElementById(btn_mod).innerHTML = "취소";</p>
<p> if(document.getElementById(btn_rpy).innerHTML = "취소"){
document.getElementById(btn_rpy).innerHTML = "답변";
}</p>
<p> } else {
console.log('답변열림');
document.getElementById(btn_rpy).innerHTML = "취소";</p>
<p> </p>
<p>// 에러나는 구문</p>
<p> <span style="color:#e74c3c"><strong> if(document.getElementById(btn_mod).innerHTML = "취소"){</strong></span></p>
<p>// 에러나는 구문 끝
alert('dd');
document.getElementById(btn_mod).innerHTML = "수정";
}
}</p>
<p> if (c_holder == comment_id && w_holder == work)
{
if(work == 'cu'){
console.log('수정닫힘');
document.getElementById(btn_mod).innerHTML = "수정";
} else {
console.log('답변닫힘');
document.getElementById(btn_rpy).innerHTML = "답변";
}
comment_box('','c');
return;
}
}</p>
<p> var el_id;</p>
<p>
// 댓글 아이디가 넘어오면 답변, 수정
if (comment_id)
{
if (work == 'c')
el_id = 'reply_' + comment_id;
else
el_id = 'edit_' + comment_id;
}
else
el_id = 'bo_vc_w';</p>
<p> if (save_before != el_id)
{
if (save_before)
{</p>
<p> // 하단 원글 댓글폼 유지 코드
if (save_before != 'bo_vc_w')
{
document.getElementById(save_before).style.display = 'none'; // 대댓글 입력시 bo_vc_w display 값 제어 코드
document.getElementById(save_before).innerHTML = ''; // 대댓글 입력시 bo_vc_w html 삭제 코드
}</p>
<p> }
document.getElementById(el_id).style.display = ''; // 원글 댓글 입력폼 display 속성
document.getElementById(el_id).innerHTML = save_html; // 댓글 입력폼</p>
<p> // 댓글 수정
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');
/* 2018-01-15 원본 주석처리
if (document.getElementById('secret_comment_'+comment_id).value)
document.getElementById('wr_secret').checked = true;
else
document.getElementById('wr_secret').checked = false;
*/
}</p>
<p> document.getElementById('comment_id').value = comment_id;
document.getElementById('w').value = work;</p>
<p> if(save_before)
$("#captcha_reload").trigger("click");</p>
<p> save_before = el_id;
}
c_holder = comment_id;
w_holder = work;
}</p>
<p>
//에러나는 구문
//에러나는 구문 끝
사이에 있는 if 조건문이 에러가 나는데요
저 조건이 false인데 왜 오류가 날까요?ㅠ
답변 2개
null이 존재가능한것을 체크하도록 추가해보세요
if(document.getElementById(btn_mod).innerHTML = "취소"){
의 문장을
변수를 이용해서 변경해봅니다.
var btnMod = document.getElementById(btn_mod).innerHTML;
if (btnMod && btnMod == "취소"){
와 같이 변경해보세요
답변에 대한 댓글 6개
HTML코드를 올려줘보세요
굳이 innerHTML 을 사용해야 하는건지 먼저 확인이 필요해보이네요
보통 value로 하면 될거 같습니다만
<?php if ($list[$i]['is_reply']) { ?>
<li>
<a href="<?php echo $c_reply_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'c'); return false;" id="btn_reply_<?php echo $comment_id; ?>">답변</a>
</li>
<?php } ?>
<?php if ($list[$i]['is_edit']) { ?>
<li>
<a href="<?php echo $c_edit_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'cu'); return false;" id="btn_mod_<?php echo $comment_id; ?>">수정</a>
</li>
<?php } ?>
<?php if ($list[$i]['is_del']) { ?>
<li>
<a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a>
</li>
<?php } ?>
</ul>
요 코드 입니다.
근데 value 로 줘도 cannot property value of null 로 오류가 나네요 ㅠㅠㅠ
if문의 조건을
btnMod 로 하니 정상작동합니다....;
여기서 btnMod 는
var btnMod = document.getElementById(btn_mod);
입니다;
$list를 제외하고 위에 먼저 올려주신 스크립트를 적용해서
페이지를 구성해봤습니다.
http://deb.kr/test/testc2.php
오류가 다른쪽에서 나오는데요
소스보기/개발자도구로 확인해보세요
var w_holder;
요게 function 위에 존재해야 합니다;
까먹고 안드렸네요;
다른걸 여쭤봐도 될까요?
댓글이 5개이고
각 댓글마다 1개의 대댓글이 달렸을 경우
사용자가 답변 버튼을 누르면 답변이 취소로 치환되어 나올것이고
이때, 사용자가 수정 버튼을 누르면 취소는 답변으로 수정은 취소로 나올것인데
이 상황에서
다른 댓글의 답변 버튼을 누르면..
이전 댓글의 수정버튼이 취소로 변경된 것은 다시 취소에서 수정으로 변경되야 하는데..
요게 좀 어렵네요;
아예 comment_id 가 있다면
초기화시켜버리는 소스는
btnRpy.innerHTML = '답변';
이라고 적어두면 되는것 아닌가요?
시간내주셔서 너무 감사드립니다.
그 값을 가지고 getElementById로 접근하는게 가장 깔끔합니다.
jquery로 다양하게 접근할수있지만,
단순한게 유지보수에 상책이라고 봅니다.
다시말해
코멘트를 Loop로 뿌리는 시점에
각 코멘트별로 버튼별로 id를 다르게 만들어지게 해서
접근하시는게 낫다는겁니다.
패턴을 잘 정해서 만들어보시면될듯합니다.
그리고, 여러개의 코멘트가 수정/삭제가 동시에 열리는 경우는 매우 드물고
본인이 작성한건 여러개를 열어도 무방할듯 싶습니다.
댓글을 작성하려면 로그인이 필요합니다.
// 에러나는 구문 if(document.getElementById(btn_mod).innerHTML = "취소"){ // 에러나는 구문 끝
여기에서
if 문 안의 내용은 document.getElementById(btn_mod).innerHTML = "취소"
대입문입니다.
비교문이 되도록 하시려면
// 에러나는 구문 if(document.getElementById(btn_mod).innerHTML == "취소"){ // 에러나는 구문 끝
와 같이 == 를 하셔야죠
답변에 대한 댓글 1개
수정하고 실행해봤는데도 마찬가지네요 -_-;;;
Uncaught TypeError: Cannot read property 'innerHTML' of null
요런 에러가 나는데 이유가 뭘까요;
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
마찬가지 입니다.
변수를
var btnMod = document.getElementById(btn_mod).innerHTML;
이렇게 써주니 innerHTML 치환이 안되서
var btnMod = document.getElementById(btn_mod);
이렇게 변경하였습니다.
근데 오류 문구는 같네요 ㅠ