差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| study:javascript:dojo:select [2009/05/07 02:00] – 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 | ||
| }); | }); | ||
| }// | }// | ||
| 行 247: | 行 257: | ||
| 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 ) { | ||
| | | ||
| - | | + | |
| | | ||
| | | ||
| 行 263: | 行 273: | ||
| }); | }); | ||
| }); | }); | ||
| - | }//if | + | |
| }); | }); | ||
| }, | }, | ||
| 行 269: | 行 279: | ||
| | | ||
| } | } | ||
| + | ,sort: sortAttributes | ||
| }); | }); | ||
| } | } | ||
| 行 282: | 行 293: | ||
| }); | }); | ||
| }); | }); | ||
| + | |||
| + | var sortAttributes = [{attribute: | ||
| //--> | //--> | ||
| </ | </ | ||
| </ | </ | ||
| < | < | ||
| + | |||
| <select id=" | <select id=" | ||
| <select id=" | <select id=" | ||
| 行 292: | 行 306: | ||
| </ | </ | ||
| + | ~~DISCUSSION~~ | ||