我有一系列复选框输入,我想在用户点击按钮时取消选中所有框。检查输入似乎没有设置attr,所以我不确定是否/如何重置“已检查”道具。我想在纯CLJS中执行此操作,请不要使用额外的DOM操作库。如果在Reagent框架内有更聪明的方法可以做到这一点,那么这也是一个可接受/有用的答案。
(defn clear-order []
(map #(set! (.-checked %) false) (.getElementsByTagName js/document "input")))
这可以获得我所有的输入,也许可以做到它应该做的,但实际上并没有取消选中我的输入。
答案 0 :(得分:3)
就像有人在评论中说的那样,你需要使用渴望而不是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"))))
答案 1 :(得分:0)
试试这个:
(doseq [something (goog.array.toArray (.getElementsByTagName js/document "input"))]
(js/console.log something))