使用构建版本的Dojo时出错(但未使用未压缩的源)

时间:2017-05-30 21:51:31

标签: javascript dojo

当我使用未压缩的Dojo源时,我注意到一些奇怪的事情,我们的代码正常运行而没有错误。到目前为止,我从档案中试过这两个

dojo-release-1.10.6-src和dojo-release-1.10.8-src

但是,当我切换到内置版本时,

dojo-release-1.10.6或dojo-release-1.10.8

使用dojo.query时出现错误

  

TypeError:root.getElementsByTagName不是函数

我的函数调用看起来像这样

var dom_frag = domConstruct.toDom(response);
var title = dojo.query(".accordion_title", dom_frag)[0];

其中response包含HTML字符串。 (这里发帖太久了)

编辑:显示'dom_frag'内容的调试器图片

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

好的,您是否检查过dom_frag变量是否是单个dom节点?如果dom片段是多个节点,则dojo.query不会起作用,因为它需要搜索单个dom节点的子节点。 要解决此问题,请尝试使用单个节点包装toDom内容...如下所示:

var dom_frag = domConstruct.toDom("<div>"+response+"</div>");
var title = dojo.query(".accordion_title", dom_frag)[0];

当然,这有点像黑客......但如果你不能保证响应会以单个节点结束,那么你需要这样做。

答案 1 :(得分:0)

确保您的root实际上是一个DOM元素:

  

Element.getElementsByTagName()方法返回实时   HTMLCollection具有给定标记名称的元素。子树   搜索指定元素下面的元素   本身。 Ref