这是this question的跟进。
我正在使用setTimeout()
来增加秒表的毫秒数,并显示以下代码。
domAttr.set("milliseconds", "innerHTML", milliseconds);
但是,我遇到一个错误:
Uncaught TypeError: Object #<HTMLDocument> has no method 'set'
即使我已包含必需的模块dojo/dom-attr
。
到目前为止是我的fiddle。我在做什么错?
这是因为您的模块和回调不匹配。您具有以下模块+回调:
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。