这是this question的后续内容。
我正在使用setTimeout()
来递增秒表毫秒,并使用以下代码来显示它。
domAttr.set("milliseconds", "innerHTML", milliseconds);
然而,我收到一个错误:
Uncaught TypeError: Object #<HTMLDocument> has no method 'set'
即使我已经包含了所需的模块dojo/dom-attr
。
到目前为止,这是我的fiddle。 我做错了什么?
答案 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。