source: branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js @ 22796

Revision 22796, 4.6 KB checked in by h_yoshimoto, 11 years ago (diff)

#2236 2.12.3リリース以降の2.12-devへのコミット差し戻し

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
Line 
1/*------------------------------------------
2指定されたノードを、オープンまたはクローズする
3------------------------------------------*/
4function openOrClose(tgt){
5    //指定ノードが「hidden」のとき、リストを可視化
6    if(tgt.style.visibility == "hidden"){
7        tgt.style.display = "block";
8        tgt.style.visibility = "visible";
9        tgt.style.height = "auto";
10        tgt.style.paddingTop = "0.25em";
11        tgt.style.lineHeight = "1em";
12        tgt.style.opacity = 1.0;
13    }
14    //指定ノードが「hidden」でないとき、リストを隠す
15    else{
16        tgt.style.display = "none";
17        tgt.style.visibility = "hidden";
18        tgt.style.height = "0px";
19        tgt.style.paddingTop = "0";
20        tgt.style.lineHeight = 0;
21        tgt.style.opacity = 0;
22    }
23}
24
25/*------------------------------------------
26リストープン処理
27------------------------------------------*/
28function listopen(lv, num){
29    var tgt = document.getElementsByClassName("level" + lv)[num];
30    //次のレベルをサーチ → 次のレベルのリストをオープンする
31    for(var i=0; i < document.getElementsByClassName("level" + (lv+1)).length; i++){
32        var next_tgt = document.getElementsByClassName("level" + (lv+1))[i];
33        //li
34        if (next_tgt.parentNode == tgt || next_tgt.parentNode.parentNode == tgt){
35            openOrClose(next_tgt);
36        }
37    }
38    //次のレベルをサーチ → 表示ボタンの状態を変更
39    for(var i=0; i < tgt.childNodes.length; i++){
40        var next_tgt = tgt.childNodes[i];
41        //ul
42        if(next_tgt.tagName == "UL"){
43            if(next_tgt.style.height == "0px"){
44                if(event.srcElement.parentNode.className == "category_header plus"){
45                    event.srcElement.innerText = '−';
46                    event.srcElement.parentNode.className = "category_header minus";
47                }
48                next_tgt.style.height = "auto";
49            }
50            else{
51                for(var i=0; i<next_tgt.parentNode.childNodes.length; i++){
52                    if(event.srcElement.parentNode.className == "category_header minus"){
53                        event.srcElement.innerText = '+';
54                        event.srcElement.parentNode.className = "category_header plus";
55                    }
56                }
57                next_tgt.style.height = "0px";
58            }
59        }
60    }
61}
62
63/*------------------------------------------
64クリックイベントを設定する
65------------------------------------------*/
66function setclickevent(tgt, lv, num){
67    //レベル1以外の時は非表示に
68    if(lv!=1){
69        tgt.style.visibility = "hidden";
70        tgt.style.display = "none";
71        tgt.style.height = "0px";
72        tgt.style.lineHeight = 0;
73        tgt.style.paddingTop = 0;
74        tgt.style.paddingBottom = 0;
75        if(tgt.parentNode.tagName == "UL"){
76            tgt.parentNode.style.height = "0px";
77            tgt.parentNode.style.margin = "0";
78            tgt.parentNode.style.padding = "0";
79            tgt.parentNode.style.border = "none";
80        }
81    }
82    var hasLink_flg;
83    if(tgt.childNodes.length){
84        for (var j = 0; j < tgt.childNodes.length; j++) {
85            //クリック範囲の拡大
86            if(tgt.childNodes[j].tagName == 'A'){
87                tgt.setAttribute('onclick', 'location.href="' + tgt.childNodes[j].getAttribute('href') + '"');
88            }
89            //アコーディオンリストの操作イベント関数を追加
90            else if(tgt.childNodes[j].tagName == 'UL'){
91                //▶を表示し、リストオープン関数を追加
92                var linkObj = document.createElement("a");
93                linkObj.innerText = '+';
94                tgt.childNodes[0].className="category_header plus";
95                tgt.childNodes[0].appendChild(linkObj);
96                j++;
97                linkObj.parentNode.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')');
98
99                //tgt.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')');
100                break;
101            }
102        }
103    }
104}
105
106/*------------------------------------------
107初期化
108------------------------------------------*/
109//level?クラスを持つノード全てを走査し初期化
110function initCategoryList(){
111    var lv = 0;
112    //level?クラスを持つノード全てに、クリックイベントを追加
113    while(document.getElementsByClassName("level" + (++lv)).length){
114        for (var i = 0; i < document.getElementsByClassName("level" + lv).length; i++) {
115            setclickevent(document.getElementsByClassName("level" + lv)[i], lv, i);
116        }
117    }
118}
Note: See TracBrowser for help on using the repository browser.