관계에 따른 메뉴 구성방안
금일 제작의뢰에 5단계 하위메뉴 구성에 대한 의뢰가 있어서 사전 작업중 다른분이 채택되어 못 써먹게 되어 아쉬워 여기에라도 남겨봅니다.
코드는 총 5단계(10자리)로 되어 있으며 2자리마다 하위메뉴로 내려가게 해뒀습니다.
[code]
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
var sitecode = [];
sitecode.push([1000000000, "내용1", ""]);
sitecode.push([1010000000, "내용2", ""]);
sitecode.push([1010100000, "내용3", ""]);
sitecode.push([1010120000, "내용3-1", ""]);
sitecode.push([1010120100, "내용3-1-1", ""]);
sitecode.push([1010120200, "내용3-1-2", ""]);
sitecode.push([1010120300, "내용3-1-3", ""]);
sitecode.push([1010130000, "내용3-2", "3"]);
sitecode.push([1010101000, "내용4", ""]);
sitecode.push([1010101100, "내용4-1", ""]);
sitecode.push([1010101010, "내용45", "abc"]);
sitecode.push([1010101012, "내용46", "abc"]);
sitecode.push([1010101013, "내용47", "abc"]);
sitecode.push([1010101110, "내용55", "URL주소"]);
sitecode.push([1010101112, "내용56", "abc"]);
sitecode.push([1010101113, "내용57", "abc"]);
sitecode.push([2000000000, "대1", ""]);
sitecode.push([3000000000, "대2", ""]);
sitecode.push([4000000000, "대3", ""]);
sitecode.push([5000000000, "대4", ""]);
var step_arr = ["100000000","1000000","10000","100","1"];
function change_sel(sel_value, tf = true){
if(sel_value == ""){
sel_new();
return false;
}
var step = 0;
for(i = step_arr[0]; i >= 1; i = i/100){
if(sel_value % i == 0){
break;
}
step++;
}
tmp = step + 1;
$("select#sel_step"+tmp+" option").remove();
$("select#sel_step"+tmp).append("<option value=\""+sel_value+"\">전체</option>");
if(tmp > step_arr.length){
return false;
}
for(i = tmp + 1; i < step_arr.length; i++){
$("select#sel_step"+i).css('display', 'none');
}
$("select#sel_step"+tmp).css('display', 'block');
for(i = 0; i < sitecode.length; i++){
if(sitecode[i][0] == sel_value && sitecode[i][2] != ""){
if(tf){
alert(sitecode[i][2]);
}
break;
}
if(
(sitecode[i][0]%step_arr[step]) != 0
&& (sitecode[i][0]%step_arr[tmp]) == 0
&& sitecode[i][0]%sel_value < step_arr[step]
){
$("select#sel_step"+tmp).append("<option value=\""+sitecode[i][0]+"\">"+sitecode[i][1]+"</option>");
}
}
}
function sel_new(){
$("select#sel_step0 option").remove();
for(i = 1; i < step_arr.length; i++){
$("select#sel_step"+i).css('display', 'none');
}
$("select#sel_step0").append("<option value=\"\">전체</option>");
for(i = 0; i < sitecode.length; i++){
if(sitecode[i][0]%step_arr[0] == 0){
$("select#sel_step0").append("<option value=\""+sitecode[i][0]+"\">"+sitecode[i][1]+"</option>");
}
}
}
function select_sel(sel_value){
var step = 0;
for(i = 100000000; i >= 1; i = i/100){
if(sel_value % i == 0){
break;
}
step++;
}
var sub_sel_value = "";
var start_str = 2;
for(cnt = 0; cnt <= step; cnt++){
$("select#sel_step"+cnt).css('display', 'block');
sub_sel_value = sel_value.substr(0, start_str);
sub_sel_value = sub_sel_value * step_arr[cnt];
change_sel(sub_sel_value, false);
$("#sel_step"+cnt).val(sub_sel_value);
start_str = start_str + 2;
}
}
$(document).ready(function() {
sel_new();
//페이지가 지정되었을 경우
//select_sel("1010100000");
});
</script>
<select id="sel_step0" name="sel_step0" onchange="change_sel(this.value);" class="sel_step">
</select>
<select id="sel_step1" name="sel_step1" onchange="change_sel(this.value);" class="sel_step">
</select>
<select id="sel_step2" name="sel_step2" onchange="change_sel(this.value);" class="sel_step">
</select>
<select id="sel_step3" name="sel_step3" onchange="change_sel(this.value);" class="sel_step">
</select>
<select id="sel_step4" name="sel_step4" onchange="change_sel(this.value);" class="sel_step">
</select>
[/code]
댓글 1개
출처 남겨놓으면 될까요?
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5156 | PHP |
|
2년 전 | 976 | |
| 5155 | JavaScript |
|
2년 전 | 867 | |
| 5154 | PHP |
|
2년 전 | 1778 | |
| 5153 | 웹서버 |
|
2년 전 | 820 | |
| 5152 | PHP |
|
2년 전 | 1006 | |
| 5151 | PHP |
|
2년 전 | 862 | |
| 5150 | node.js | 2년 전 | 1295 | ||
| 5149 | OS | 2년 전 | 1528 | ||
| 5148 | 웹서버 | 2년 전 | 929 | ||
| 5147 | PHP | 2년 전 | 6909 | ||
| 5146 | JavaScript | 2년 전 | 1712 | ||
| 5145 | PHP | 2년 전 | 939 | ||
| 5144 | PHP | 2년 전 | 1422 | ||
| 5143 | JavaScript | 2년 전 | 824 | ||
| 5142 | PHP |
|
2년 전 | 915 | |
| 5141 | 웹서버 | 2년 전 | 2418 | ||
| 5140 | 기타 | 3년 전 | 1562 | ||
| 5139 | JavaScript | 3년 전 | 1205 | ||
| 5138 | PHP | 3년 전 | 1515 | ||
| 5137 | MySQL | 3년 전 | 1703 | ||
| 5136 | PHP | 3년 전 | 2005 | ||
| 5135 | PHP | 3년 전 | 1950 | ||
| 5134 | JavaScript |
오토소프트
|
3년 전 | 1105 | |
| 5133 | PHP |
|
3년 전 | 1138 | |
| 5132 | 웹서버 | 3년 전 | 1300 | ||
| 5131 | OS | 3년 전 | 1934 | ||
| 5130 | OS | 3년 전 | 1414 | ||
| 5129 | OS | 3년 전 | 1801 | ||
| 5128 | OS | 3년 전 | 1811 | ||
| 5127 | OS | 3년 전 | 928 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기