0

我有以下代码,直接来自教程:

<!DOCTYPE HTML>
  <head>
    <link rel="stylesheet" href="js/dijit/themes/claro/claro.css" />
    <script src="js/dojo/dojo.js" data-dojo-config="async: 1, parseOnLoad: 1"></script>
    <script>
      require(["dojo/_base/fx", "dojo/on", "dojo/dom", "dojo/parser", "dojo/domReady!"], function(fx, on, dom, parser) 
      {
        var fadeOutButton = dom.byId("fadeOutButton"),
            fadeInButton = dom.byId("fadeInButton"),
            fadeTarget = dom.byId("fadeTarget");

        on(fadeOutButton, "click", function(evt)
        {
          fx.fadeOut({ node: fadeTarget }).play();
        });

        on(fadeInButton, "click", function(evt)
        {
          fx.fadeIn({ node: fadeTarget }).play();
        });

      });           
    </script>       
  </head>
  <body class="claro">
    <button data-dojo-type="dijit/form/Button" type="button" id="fadeOutButton">Fade block out</button>
    <button data-dojo-type="dijit/form/Button" type="button" id="fadeInButton">Fade block in</button>

    <div id="fadeTarget" style="background: red; height: 256px">
      A red block
    </div>  
  </body>
</html>

我的目标是让 Dojo 样式化按钮。据我所知,这是由解析器完成的。这样做的问题是解析器将更改按钮元素的 id,因此不会触发事件。如果我从 0 中删除dojo/parserrequire更改parseOnLoad为 0,按钮会起作用,但它们不是样式。使用上面的代码,按钮被设置了样式但不起作用。有可能两者兼得吗?

4

1 回答 1

0

我想我想通了——我必须使用registry.byId而不是dom.byId

于 2012-08-23T15:25:02.370 回答