Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-14.log failed
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
study:javascript:dojo:select [2009/05/07 01:48] – banana | study:javascript:dojo:select [2010/07/26 11:32] (現在) – banana | ||
---|---|---|---|
行 4: | 行 4: | ||
今回の例では、表示するデータを**JSON**(%%JavaScript Object Notation%%)で保存してある。 | 今回の例では、表示するデータを**JSON**(%%JavaScript Object Notation%%)で保存してある。 | ||
ツリーの構造は**%%Dojo Campus%%**(([[http:// | ツリーの構造は**%%Dojo Campus%%**(([[http:// | ||
- | あるいは、次節で示す**JSON**データを**JSON Editor**(([[http:// | + | あるいは、次節で示す**JSON**データを**JSON Editor**(([[http:// |
{{keywords> | {{keywords> | ||
行 86: | 行 86: | ||
</ | </ | ||
- | ここで、利用するのがdojoのコアパッケージにある%%**ItemFileReadStore**%%である。 | + | ここで、利用するのがdojoのコアパッケージにある**%%ItemFileReadStore%%**である。 |
次は読み込んだ**JSON**から初期リストを出力するコードを示す。 | 次は読み込んだ**JSON**から初期リストを出力するコードを示す。 | ||
行 96: | 行 96: | ||
onComplete: function( items ) { | onComplete: function( items ) { | ||
| | ||
- | | + | var opt=document.createElement(' |
- | opt.appendChild(document.createTextNode(store.getValue( item, " | + | opt.appendChild(document.createTextNode(store.getValue( item, " |
- | opt.setAttribute(' | + | opt.setAttribute(' |
- | dojo.byId(' | + | dojo.byId(' |
- | }); | + | |
- | | + | }, |
onError: function(e) { | onError: function(e) { | ||
| | ||
- | } | + | }, |
+ | sort: sortAttributes | ||
}); | }); | ||
| | ||
行 134: | 行 135: | ||
onError: function(e) { | onError: function(e) { | ||
| | ||
- | } | + | }, |
+ | sort: sortAttributes | ||
}); | }); | ||
}// | }// | ||
行 148: | 行 150: | ||
function onChange(item, | function onChange(item, | ||
var val = item.options[item.selectedIndex].text; | var val = item.options[item.selectedIndex].text; | ||
- | | + | |
onComplete: function( items ) { | onComplete: function( items ) { | ||
| | ||
- | | + | |
- | dojo.byId(child).innerHTML=""; | + | dojo.forEach(child, function(e){ |
+ | if(e) dojo.byId(e).innerHTML="" | ||
+ | }); | ||
var children = store.getValues( item, " | var children = store.getValues( item, " | ||
| | ||
行 158: | 行 162: | ||
opt.appendChild(document.createTextNode(store.getValue( node, " | opt.appendChild(document.createTextNode(store.getValue( node, " | ||
opt.setAttribute(' | opt.setAttribute(' | ||
- | dojo.byId(child).appendChild(opt); | + | dojo.forEach(child, function(e){ |
+ | | ||
+ | }); | ||
}); | }); | ||
- | }//if | + | |
}); | }); | ||
}, | }, | ||
onError: function(e) { | onError: function(e) { | ||
| | ||
- | } | + | }, |
+ | sort: sortAttributes | ||
}); | }); | ||
} | } | ||
行 171: | 行 178: | ||
ここで、注目するところは選択された値の識別子と**JSON**の親階層(parent)の識別子を比較して、該当する親の子供階層のみ表示することである。 | ここで、注目するところは選択された値の識別子と**JSON**の親階層(parent)の識別子を比較して、該当する親の子供階層のみ表示することである。 | ||
+ | |||
===== イベントの登録 ===== | ===== イベントの登録 ===== | ||
最後にイベントの登録について説明する。ここでは、親階層のデータが変わるたびに(onchange)に子供が変わるので、一見自分の子供だけ考えれば | 最後にイベントの登録について説明する。ここでは、親階層のデータが変わるたびに(onchange)に子供が変わるので、一見自分の子供だけ考えれば | ||
行 217: | 行 225: | ||
| | ||
} | } | ||
+ | ,sort: sortAttributes | ||
}); | }); | ||
| | ||
行 242: | 行 251: | ||
| | ||
} | } | ||
+ | ,sort: sortAttributes | ||
}); | }); | ||
}// | }// | ||
- | function onChange(item, | + | function onChange(item, |
var val = item.options[item.selectedIndex].text; | var val = item.options[item.selectedIndex].text; | ||
- | | + | |
onComplete: function( items ) { | onComplete: function( items ) { | ||
| | ||
- | | + | |
- | //dojo.byId(child).innerHTML=""; | + | dojo.forEach(child, function(e){ |
+ | if(e) dojo.byId(e).innerHTML="" | ||
+ | }); | ||
var children = store.getValues( item, " | var children = store.getValues( item, " | ||
| | ||
行 257: | 行 269: | ||
opt.appendChild(document.createTextNode(store.getValue( node, " | opt.appendChild(document.createTextNode(store.getValue( node, " | ||
opt.setAttribute(' | opt.setAttribute(' | ||
- | if(args!=null){ | + | dojo.forEach(child, function(e){ |
- | | + | if(e) dojo.byId(e).appendChild(opt); |
- | | + | }); |
- | }); | + | |
- | } | + | |
- | | + | |
}); | }); | ||
- | }//if | + | |
}); | }); | ||
}, | }, | ||
行 270: | 行 279: | ||
| | ||
} | } | ||
+ | ,sort: sortAttributes | ||
}); | }); | ||
} | } | ||
行 276: | 行 286: | ||
init(); | init(); | ||
dojo.connect(dojo.byId(' | dojo.connect(dojo.byId(' | ||
- | onChange(e.target, | + | onChange(e.target, |
- | onChange(dojo.byId(' | + | onChange(dojo.byId(' |
}); | }); | ||
dojo.connect(dojo.byId(' | dojo.connect(dojo.byId(' | ||
- | onChange(e.target, | + | onChange(e.target, |
}); | }); | ||
}); | }); | ||
+ | |||
+ | var sortAttributes = [{attribute: | ||
//--> | //--> | ||
</ | </ | ||
</ | </ | ||
< | < | ||
+ | |||
<select id=" | <select id=" | ||
<select id=" | <select id=" | ||
行 293: | 行 306: | ||
</ | </ | ||
+ | ~~DISCUSSION~~ |