레이어 클릭시 나머지 모든 레이어 감추는 방법 궁금합니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

레이어 클릭시 나머지 모든 레이어 감추는 방법 궁금합니다. 정보

레이어 클릭시 나머지 모든 레이어 감추는 방법 궁금합니다.

본문

현재 펼쳐지는 faq 게시판 작업중인데 자바스크립트에 대해 궁금한게 있습니다.
작업중인 faq 게시판은 모든 카테고리를 나열하고 각 카테고리 항목안에 해당되는 게시물들이 나열되는 방식입니다.
<tr>
<td>
<a href="javascript:clickshow('<?=$k?>','<?=$i?>')"><?=$row[wr_subject]?></a>
</td>
</tr>
<tr id="block<?=$K?>_<?=$i?>" style="display:none">
...
</tr>

$K 는 카테고리 번호, $i 는 게시물 번호 입니다.

스크립트는
<script language="javascript">
<!--       
function clickshow(num,cnt) {
content=eval("document.all.block"+num+"_"+cnt+".style");
if (content.display=="block") {
content.display="none";
} else {
content.display="block";
}
}
//-->
</script>

이렇게 해놨습니다.

잘 작동은 되지만 여러 게시물이 펼쳐지면 정신없어서 한 게시물을 클릭하면 나머지 모든 레이어는 감추게 처리하고 싶습니다. 각 카테고리별로 게시물 수가 제각각이라서 어떻게 해야할지 난감합니다.
  • 복사

댓글 전체

function clickshow(num,cnt) {
$('tr').filter(function () { return /block[0-9]*_[0-9]*/.test(this); }).hide();
$('#block'+num+'_'+cnt).show();
}

제가 머리쥐어짜서 만든거예요 ^^
테스트해보세요... [테스트는 못해봣어요 ㅜ<정규식부분이 이상하지만..]
[그냥 덧글답변만 하시면 확인못할수잇으니 쪽지도 부탁드립니다]
아고 감사합니다. 제이퀘리로 하면 코드가 간단해지는가 봅니다.

활동지수가 낮다고 쪽지보내기가 안되네요 ㅠㅠ

일단 해당 레이어 펼쳐지기는 잘되는데 감춰지기 아무것도 먹히질 않습니다.
현재 일단은 무식하게 각 카테고리별로 게시물의 총 수를 체크하여
$list_cnt0 ~ $list_cnt7 에 넣어서 (카테고리가 현재는 7개입니다.)

임시방편으로
function clickshow(num,cnt) {
var k = 0;
for (j=0; j<<?=count($arr)?>; j++) {
if (j==0) k=<?=$list_cnt0?>;
else if (j==1) k=<?=$list_cnt1?>;
else if (j==2) k=<?=$list_cnt2?>;
else if (j==3) k=<?=$list_cnt3?>;
else if (j==4) k=<?=$list_cnt4?>;
else if (j==5) k=<?=$list_cnt5?>;
else if (j==6) k=<?=$list_cnt6?>;
else if (j==7) k=<?=$list_cnt7?>;

for (i=0; i<k; i++) {
content=eval("document.all.block"+j+"_"+i+".style");
if (j==num && i==cnt) {
if (content.display=="block") {
content.display="none";
} else {
content.display="block";
}
} else {
content.display="none";
}
}
}
}

요렇게 해놨습니다. ㅠㅠ 되기는 하는데 카테고리수가 변하면 스크립트를 계속 수정해야하니...
견해님 넘 감사합니다. 정상으로 아주 잘 작동합니다.
자바스크립트는 어느정도는 이해할 수 있을정도(위에서처럼 무식하게 나열하는정도 ㅠㅠ)인데 제이퀘리는 많이 다르네요.
두번째꺼로 적용했습니다. 위에 적어주신거와 한끝차이였는데... 제가 좀 알았다면 이것저것 시도하다 해결했을수도 있었을텐데... 견해님 시간을 이중으로 뺒었네요 ㅠㅠ
덕분에 코드가 무지 간결해졌는데 어찌 감사의 말씀을 드려야 할지...
정말 감사드립니다.
앞서 열린 object를 기억시켜두었다가  hidden시키면 됩니다
var old_obj=null;
function clickshow(num,cnt) {
content=eval("document.all.block"+num+"_"+cnt+".style");
if (content.display=="block") {
content.display="none";
} else {
content.display="block";
if(old_obj !=null && old_obj !=content) old_obj.display='none';
old_obj=content;
}
}
감사합니다 균이님.
저번에도 mb_nick 넘기던거 mb_no 로 넘기라고 중요한 지적해주셔서 큰 도움 됐었는데 이번에도 새로운 가르침 주셔서 감사합니다.
처음 올렸던 원문 스크립트에 몇가지를 덧붙여 주셔서 자바스크립트 이해하고 공부하는데 넘 도움이 됩니다.
잘 작동됩니다. 앞서 열린 object를 이런식으로 기억시킬수도 있는거군요. 아직 산수정도 수준의 스크립트만 알아가는 중이라 버벅거리지만 덕분에 또 배워갑니다.
감사합니다.

var old_obj=null;
...
if(old_obj !=null && old_obj !=content) old_obj.display='none';
old_obj=content;
null을 이렇게 간단히 처리하면 되는군요. 안그래도 null 문제를 어떻게 해결하나 궁금했었는데. 감사합니다.
© SIRSOFT
현재 페이지 제일 처음으로