用法domconstruct = http://dojotoolkit.org/reference-guide/1.9/dojo/dom-construct.html#dojo-dom-construct-place
place()的第二个参数是
refNode String | DomNode应放置节点的DOM节点。如果是字符串,则假定它是节点的ID
它说我可以使用DOM节点,所以我试图用jquery获取domnode - >错误 也尝试使用Dojo的查询() - >同样的错误
错误:
Uncaught TypeError: Object [object Object] has no method 'appendChild'
我的代码 domConstruct.place(errorBoxHtml,$(“#”+ currentView.id +“。content”),“first”);
答案 0 :(得分:1)
dojo/query
并且jQuery的选择器没有返回正确的DOM节点,而是返回列表的节点。
您可以在this JSFiddle上看到使用jQuery的示例。正如您在控制台中看到的那样,它表示"No it isn't"
,这意味着它没有返回您编写的选择器的DOM节点,您甚至可以在控制台中看到它实际返回的内容(DOM节点数组)
我也在这个JSFiddle中使用Dojo做了同样的例子。正如您在那里看到的那样,dojo/query
不返回DOM节点,而是返回DOM节点列表。但是,当您使用dojo/dom
模块和方法byId()
时,您将获得一个DOM节点。
这解释了为什么您的代码不起作用。如果您正在使用查询,则可以使用dojo/NodeList-dom
独立获取所有节点并在每个节点上调用该函数,或者如果您确定只有1个DOM节点,则还可以使用:
require(["dojo/query", "dojo/domReady!"], function(query) {
var myNode = query("...")[0];
});
但是我认为你正在使用的模块有问题。查询用于检索零到多个结果,您应该以这种方式使用它。如果你想获得一个特定的DOM节点,你应该使用ID来识别它,并使用dojo/dom
模块,因为它是为了这个目的而制作的。
答案 1 :(得分:0)
我认为你有可能没有得到一个合适的domNode(正如Dojo所理解的那样)。为什么不使用dojo.byId API来获取它?
答案 2 :(得分:0)
如果我有id,我可以在函数中输入id作为字符串。这很好。我的div只有一个类名,但我给了他们所有的id。现在我可以在函数
中将id作为字符串用作'refNode'参数