使用 if 布尔变量在 clojurescript 中切换行 class
switch line class in clojurescript with if boolean variable
如何使用 clojurescript 切换列表中的 li class,当 @switchvar 为真时,所有奇数行都应处于活动状态,否则偶数行应处于活动状态
我尝试了 if 语句,没有任何反应。
(defn listitems [items]
[:ul
(for [item items]
^{:key item} [:li {:class
(if (@switchvar true)
((odd? item) "active")
((even? item) "active") )
} "Item " item ])])
您的 if 语句似乎不正确。你可以这样做:
[:ul (map #(-> [:li {:class %2} "item" %1])
items
(cycle ["active" "non-active"]))]
您正在调用 switchvar
原子中的函数,并将其作为参数提供给它 true
。最好只是取消引用 (@
) 它:
(defn listitems [items]
[:ul
(for [item items
idx (range (count items))]
^{:key item} [:li {:class
(if (and (odd? idx) (odd? @switchvar))
"active"
"inactive")
} "Item " item])])
我进行了更改,以便每个列表项都有一个不同的 idx。所以 @switchvar
和 idx
都可以改变。我希望您可以更改此代码以满足您的确切需求。
谢谢@all,在您的提示下,我对 clojure 有了一个良好的开端。 switchvar 实际上是布尔值。我将第一个 "inactive" 更改为另一个 if 子句。
(defn lister-items2 [items]
[:ul
(for [item items ]
^{:key item} [:li {:class
(if (and (odd? item) (true? @switchvar))
"active"
(if (and (even? item) (false? @switchvar))
"active"
"inactive"))
} "Item " item])])
如何使用 clojurescript 切换列表中的 li class,当 @switchvar 为真时,所有奇数行都应处于活动状态,否则偶数行应处于活动状态
我尝试了 if 语句,没有任何反应。
(defn listitems [items]
[:ul
(for [item items]
^{:key item} [:li {:class
(if (@switchvar true)
((odd? item) "active")
((even? item) "active") )
} "Item " item ])])
您的 if 语句似乎不正确。你可以这样做:
[:ul (map #(-> [:li {:class %2} "item" %1])
items
(cycle ["active" "non-active"]))]
您正在调用 switchvar
原子中的函数,并将其作为参数提供给它 true
。最好只是取消引用 (@
) 它:
(defn listitems [items]
[:ul
(for [item items
idx (range (count items))]
^{:key item} [:li {:class
(if (and (odd? idx) (odd? @switchvar))
"active"
"inactive")
} "Item " item])])
我进行了更改,以便每个列表项都有一个不同的 idx。所以 @switchvar
和 idx
都可以改变。我希望您可以更改此代码以满足您的确切需求。
谢谢@all,在您的提示下,我对 clojure 有了一个良好的开端。 switchvar 实际上是布尔值。我将第一个 "inactive" 更改为另一个 if 子句。
(defn lister-items2 [items]
[:ul
(for [item items ]
^{:key item} [:li {:class
(if (and (odd? item) (true? @switchvar))
"active"
(if (and (even? item) (false? @switchvar))
"active"
"inactive"))
} "Item " item])])