2014-01-11 15 views
2

我試圖隱藏ClojureScript中的元素,更具體地說是Dommy庫。這是我走到這一步:在Clojurescript Dommy中隱藏元​​素

ClojureScript:

(ns fucking_about                 
    (:require                   
    [dommy.utils :as utils]               
    [dommy.core :as dommy])               
    (:use-macros                  
    [dommy.macros :only [node sel sel1]])) 

(map dommy/toggle! (sel :.hide)) 

HTML:

<html> 
<head><title></title></head> 
<body> 
    <ul> 
     <li class="show">Derp</li> 
     <li class="hide">Herp</li> 
     <li class="show">ies!</li> 
    </ul> 
    <script type="text/javascript" src="script.js"></script> 
</body> 
</html> 

但在瀏覽器中打開該網站時,我沒有得到任何結果,我不知道爲什麼:<我在Github頁面上找不到關於ClojureScript的任何文檔。

回答

9

事情是,map返回一個懶惰的元素序列。懶惰的順序是你可以得到的某種未實現的承諾。你希望你的序列產生一些副作用。爲了使它工作,你只需要意識到它。

問題是微不足道的。你有兩個選擇:

1)使用doall功能來實現你的懶惰序列,這樣的:

(doall (map dommy/toggle! (sel :.hide))) 

這正是的doall目標:通過整個序列走路,強迫任何可能產生的影響。

2)使用doseq其目的是要產生副作用,這樣的:

(doseq [el (sel :.hide)] 
    (dommy/toggle! el)) 

而這一切!兩種方式你都應該得到相同的結果。

還有其他問題?

+1

啊!非常感謝@yonki –