取消选中 Clojurescript 中的复选框输入
Uncheck Checkbox inputs in Clojurescript
我有一系列复选框输入,我想在用户单击按钮时取消选中所有复选框。检查输入似乎没有设置 attr,所以我不确定 if/how 是否重置 "checked" 道具。我想在纯 CLJS 中执行此操作,不要额外的 DOM 操作库。如果在 Reagent 框架内有更聪明的方法来做到这一点,那也是一个 acceptable/helpful 答案。
(defn clear-order []
(map #(set! (.-checked %) false) (.getElementsByTagName js/document "input")))
这得到了我所有的输入,也许做了它应该做的,但实际上并没有取消选中我的输入。
试试这个:
(doseq [something (goog.array.toArray (.getElementsByTagName js/document "input"))]
(js/console.log something))
就像有人在评论中说的,你需要使用 eager 而不是 map
,这是懒惰的。 run!
就像一个急切的 map
。此外,HTMLCollection
不可排序,因此您可以使用 goog.array/toArray
获得可排序的内容。
综合起来:
(ns foo.core
(:require
[goog.array :as garray]))
(defn clear-order []
(run! #(set! (.-checked %) false)
(garray/toArray (.getElementsByTagName js/document "input"))))
我有一系列复选框输入,我想在用户单击按钮时取消选中所有复选框。检查输入似乎没有设置 attr,所以我不确定 if/how 是否重置 "checked" 道具。我想在纯 CLJS 中执行此操作,不要额外的 DOM 操作库。如果在 Reagent 框架内有更聪明的方法来做到这一点,那也是一个 acceptable/helpful 答案。
(defn clear-order []
(map #(set! (.-checked %) false) (.getElementsByTagName js/document "input")))
这得到了我所有的输入,也许做了它应该做的,但实际上并没有取消选中我的输入。
试试这个:
(doseq [something (goog.array.toArray (.getElementsByTagName js/document "input"))]
(js/console.log something))
就像有人在评论中说的,你需要使用 eager 而不是 map
,这是懒惰的。 run!
就像一个急切的 map
。此外,HTMLCollection
不可排序,因此您可以使用 goog.array/toArray
获得可排序的内容。
综合起来:
(ns foo.core
(:require
[goog.array :as garray]))
(defn clear-order []
(run! #(set! (.-checked %) false)
(garray/toArray (.getElementsByTagName js/document "input"))))