ClojureScript中的goog.dom.query TypeError
我想用ClojureScriptClojureScript中的goog.dom.query TypeError,clojurescript,google-closure-library,Clojurescript,Google Closure Library,我想用ClojureScript (:require [goog.dom.query :as q]) … (q/query ".foo.bar") 运行时在JS控制台中生成以下错误: Uncaught TypeError: Object function $o(a,b){if(!a)return[];if(a.constructor==Array)return a;if(!ia(a))return[a];if(ia(b)&&(b=ia(b)?document.getElem
(:require [goog.dom.query :as q])
…
(q/query ".foo.bar")
运行时在JS控制台中生成以下错误:
Uncaught TypeError: Object function $o(a,b){if(!a)return[];if(a.constructor==Array)return a;if(!ia(a))return[a];if(ia(b)&&(b=ia(b)?document.getElementById(b):b,!b))return[];var b=b||document,c=b.ownerDocument||b.documentElement;xo=b.contentType&&"application/xml"==b.contentType||dk&&(b.doctype||"[object XMLDocument]"==c.toString())||!!c&&(ek?c.xml:b.xmlVersion||c.xmlVersion);return(c=Wo(a)(b))&&c.Bb?c:Zo(c)} has no method 'Ja'
编辑:即使只是需要它,我也会得到错误。事实上,在goog.dom中,默认情况下查询不可用。 以下是您如何使用它的方法:
(ns cljs-dom.core
(:import [goog.dom query])
(:require [goog.dom :as gdom]))
然后你可以这样使用它:
(.log js/console (aget (query ".myClass") 0))
gdom
包含在这里是为了方便。您可以编写gdom/createElement
和所有其他标准调用。如果只需要查询
,则不需要 在源代码中将此函数标记为已弃用,并建议改用:
(.querySelector js/document.foo.bar”)
@不推荐使用这是一个全软件查询选择器。使用document.querySelector。见
在我用pretty print(不是从clojurescript而是使用goog.dom.query的JS代码)编译之后,代码中有一条注释
部分代码来自Dojo Toolkit,由
接收,您的代码中有这些注释吗?我怀疑第三方库没有包括在内,但我不明白为什么会生成代码,编译过程中也没有抛出错误。这是库不在goog目录中,您可以在第三方中找到goog.dom.query…dojo和deps.js应该有一个对它的引用。但不确定如果该引用丢失,它将如何编译。在闭包库中应该有一个文件:third\u party\closure\goog\dojo\dom\query\u test.html
您可以打开该文件,看看单元测试是否通过了goog.dom.query。我在JS文件@HMR中有这些注释。