2011-01-03 15 views
0

dijit.formにいくつか問題があります。項目を選択してください。Dojo jsツールキット:動的に選択された項目の問題

ページには、次の2つのアイテムがあります.HTMLページが読み込まれている間に1つは埋められ、もう1つはユーザーが最初に選択したオプションに応じて塗りつぶされます。ここで

は、私は(今私は、コードをシンプルに保つんだけど、実際のバージョンでは、私はヘッド部に必要なすべての道場モジュールやライブラリを含めました)について話しているものの例です:

<html> 
     <head> 
       <script type="text/javascript"> 
         function updateB(val){ 

           var menu = dojo.byId("selB"); 

           menu.options.lenght=0; 

           if(val=="aaa") 
             menu.addOption({value: "aa", label: "aa"}); 
           else 
             menu.addOption({value: "bb", label: "bb"}); 
         } 
       </script> 
     </head> 

     <body> 
       <select id="selA" name="selA" dojoType="dijit.form.Select" style="width: 180px;" onchange="updateB(this.get('value'));"></select> 

       <select id="selB" name="selB" dojoType="dijit.form.Select" style="width: 180px; "></select> 

       <script type="text/javascript"> 
         var menu = dojo.byId("selA"); 

         menu.addOption({value: "aaa", label: "aaa"},{value: "bbb", label: "bbb"}); 

       </script> 

     </body> 

</html> 

ブラウザでページを読み込むと、メニューselAにはオプションaaaとbbbが含まれています。しかし、selAのaaaまたはbbbを選択すると、空のままです。 JavaScriptのエラーコンソールでは、私は読むことができます:dojo.byId [未定義]は関数ではありません。私はこの仕事をしようと多くの時間を費やしました(多くの選択肢を試してみました)が、運がなかった。オンロードイベントでdojo selectを満たすことができます。onchange(別のselectに関連付けられている)やonclick(ボタンに関連付けられていません)ではありません。標準のHTML選択項目では、すべてがうまく動作します。 この問題を解決するにはどうすればよいですか?

おかげ

ここ

答えて

0

は、多かれ少なかれ、あなたの私が変更されているどのような例

<html> 
    <head> 
      <link href="js/dijit/themes/claro/claro.css" rel="stylesheet" type="text/css" /> 
      <script type="text/javascript" src="js/dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script> 

      <script type="text/javascript"> 
        dojo.require("dijit.form.Select"); 
        function updateB(val){ 
          var menu = dijit.byId("selB"); 
          menu.options.lenght=0; 
          if(val=="aaa") 
            menu.addOption({value: "aa", label: "aa"}); 
          else 
            menu.addOption({value: "bb", label: "bb"}); 
        } 
        dojo.addOnLoad(function() 
        { 
         var menu = dijit.byId("selA"); 
         menu.addOption([{value: "aaa", label: "aaa"},{value: "bbb", label: "bbb"}]); 
        }); 
      </script> 
    </head> 

    <body> 
      <select id="selA" name="selA" dojoType="dijit.form.Select" style="width: 180px;" onchange="updateB(this.get('value'));"></select> 
      <select id="selB" name="selB" dojoType="dijit.form.Select" style="width: 180px; "></select> 
    </body> 

取り組んでいる:

  • がコードを移動しているセットアップSELAを選択する dojo.addOnLoad 。以前は試してみたので が必要でした。 selAウィジェットを取得するには完全には が作成されていませんでした。dojoはまだ ウィジェットを返すことができませんでした。 Dojoは、ページが完全にロードされた後にウィジェットを作成します。 の後には、 addOnLoad関数と呼ばれるものがすべて作成されます。だからあなたは この関数のすべての 初期化のものを配置する必要があります。
  • 選択はdijitの種類のウィジェットなので、 dojo.byIdの代わりに dijit.byIdを使用する必要があります。
+0

ありがとうございました! –

関連する問題