使用内置版本的 Dojo 时出错(但不是未压缩的源代码)
Error using built version of Dojo (but not the uncompressed source)
我注意到在使用未压缩的 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 is not a function
我的函数调用如下所示
var dom_frag = domConstruct.toDom(response);
var title = dojo.query(".accordion_title", dom_frag)[0];
其中响应包含 HTML 字符串。 (这里太长了 post)
EDIT:显示 'dom_frag'
内容的调试器图像
确保您的 root
实际上是一个 DOM 元素,如:
the Element.getElementsByTagName() method returns a live
HTMLCollection of elements with the given tag name. The subtree
underneath the specified element is searched, excluding the element
itself. Ref.
好的,您检查过 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];
当然,这有点 hack...但是如果您不能保证响应将以单个节点结束,那么您需要这样做。
我注意到在使用未压缩的 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 is not a function
我的函数调用如下所示
var dom_frag = domConstruct.toDom(response);
var title = dojo.query(".accordion_title", dom_frag)[0];
其中响应包含 HTML 字符串。 (这里太长了 post)
EDIT:显示 'dom_frag'
内容的调试器图像确保您的 root
实际上是一个 DOM 元素,如:
the Element.getElementsByTagName() method returns a live HTMLCollection of elements with the given tag name. The subtree underneath the specified element is searched, excluding the element itself. Ref.
好的,您检查过 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];
当然,这有点 hack...但是如果您不能保证响应将以单个节点结束,那么您需要这样做。