3

我正在尝试使用ClojureScript中的 goog.dom.query。

(: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'

编辑:即使只是要求它,我也会得到错误。

4

2 回答 2

2

源代码中的注释将此函数标记为已弃用,并建议使用document.querySelector代替:

(.querySelector js/document ".foo.bar")

@deprecated这是一个全软件查询选择器。使用
document.querySelector。请参阅
https://developer.mozilla.org/en-US/docs/DOM/Document.querySelector

于 2015-04-27T22:08:37.923 回答
0

事实上,在 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和所有其他标准调用。如果您只需要query,则不需要。

于 2013-12-14T21:05:07.543 回答