如何在列表中使用clojurescript切换li类,当@switchvar为true时,所有奇数行都应该是活动的,在另一种情况下偶数行应该是活动的
我尝试了if语句,没有任何反应。
(defn listitems [items]
[:ul
(for [item items]
^{:key item} [:li {:class
(if (@switchvar true)
((odd? item) "active")
((even? item) "active") )
} "Item " item ])])
答案 0 :(得分:0)
您的if语句似乎不正确。你可以这样做:
[:ul (map #(-> [:li {:class %2} "item" %1])
items
(cycle ["active" "non-active"]))]
答案 1 :(得分:0)
您正在调用switchvar
原子内的函数,并将其作为true
作为参数。最好只是deref(@
):
(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
都可以更改。我希望您可以更改此代码以满足您的确切需求。
答案 2 :(得分:0)
谢谢@ all,我用你的提示开始了一个很好的开始。 switchvar实际上是布尔值。我改变了第一个"不活动"到另一个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])])