无法启动秒表计时器

时间:2014-01-09 08:58:25

标签: javascript dojo

这是this question的后续内容。

我正在使用setTimeout()来递增秒表毫秒,并使用以下代码来显示它。

domAttr.set("milliseconds", "innerHTML", milliseconds);

然而,我收到一个错误:

Uncaught TypeError: Object #<HTMLDocument> has no method 'set' 

即使我已经包含了所需的模块dojo/dom-attr

到目前为止,这是我的fiddle。 我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是因为您的模块和回调不匹配。您有以下模块+回调:

require(["dijit/form/Button", "dojo/dom", "dojo/domReady!", "dojo/dom-attr"], function(Button, dom, domAttr) {
    // code
});

您的函数参数实际上将包含与其对应的模块的结果(以相同的顺序),因此意味着:

  • dijit/form/Button = Button(ok)
  • dojo/dom = dom(ok)
  • dojo/domReady! = domAttr不行

每个模块都有结果,即使是那些似乎没有有用结果的结果(如dojo/domReady!)。因为你在set()上调用dojo/domReady!函数(没有这样的函数),你的代码就失败了。

解决方案是将dojo/domReady!模块移动到列表的末尾,例如:

require(["dijit/form/Button", "dojo/dom", "dojo/dom-attr",  "dojo/domReady!"], function(Button, dom, domAttr) {
    // code
});

我最近写了complete guide/answer关于require()内容的工作原理,如果您不理解它可能会有趣。我还更新了您的JSFiddle