无法启动秒表计时器

问题描述 投票:1回答:1

这是this question的跟进。

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

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

但是,我遇到一个错误:

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

即使我已包含必需的模块dojo/dom-attr

到目前为止是我的fiddle。我在做什么错?

javascript dojo settimeout
1个回答
2
投票

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

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

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

  • [dijit/form/Button = Button(确定)
  • [dojo/dom = dom(确定)
  • 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

© www.soinside.com 2019 - 2024. All rights reserved.