0

使用 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 的 query() -> 相同的错误

错误:

    Uncaught TypeError: Object [object Object] has no method 'appendChild' 

我的代码 domConstruct.place(errorBoxHtml, $("#"+currentView.id+" .content") , "first");

4

3 回答 3

1

dojo/query并且 jQuery 的选择器没有返回正确的 DOM 节点,而是返回了一个节点列表

您可以在此 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模块,因为它是为此目的而制作的。

于 2013-08-11T22:03:38.593 回答
0

如果我有 id,我将能够在函数中将 id 作为字符串键入。这很好用。我的 div 只是有一个类名,但我给了他们一个 id。现在我可以将 id 作为字符串用作函数中的 'refNode' 参数

于 2013-08-09T07:00:19.370 回答
0

我认为您有可能没有获得适当的 domNode(正如 Dojo 所理解的那样)。为什么不使用dojo.byId API 来获取呢?

于 2013-08-08T14:38:53.703 回答