取消选中Clojurescript中的复选框输入

时间:2017-09-28 15:08:34

标签: clojure clojurescript reagent

我有一系列复选框输入,我想在用户点击按钮时取消选中所有框。检查输入似乎没有设置attr,所以我不确定是否/如何重置“已检查”道具。我想在纯CLJS中执行此操作,请不要使用额外的DOM操作库。如果在Reagent框架内有更聪明的方法可以做到这一点,那么这也是一个可接受/有用的答案。

(defn clear-order []
  (map #(set! (.-checked %) false) (.getElementsByTagName js/document "input")))

这可以获得我所有的输入,也许可以做到它应该做的,但实际上并没有取消选中我的输入。

2 个答案:

答案 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))