当我使用未压缩的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'内容的调试器图片
答案 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