2012-05-09 13 views
0

我試圖在網頁上顯示兩個序列的內容。第一個包含圖片的名稱,第二個包含圖片的URL。當我嘗試迭代這兩個列表(使用foreach-for循環)時,問題的開始 - 這會導致多個圖片名稱或多個圖片(簡而言之,總是一團糟)。下面是示例的我的網頁呈現代碼(序列被轉換使用(vec(flatten (sequence)))到向量):在組合頁面上顯示來自兩個並行序列的數據

(defn view-output [] 
    (view-layout 
    [:h2 "default images"] 


    [:form {:method "post" :action "/"} 
    (for [manganame ["image1" "image2"]] 
     [:input {:type "text" :value manganame}]) 

     (for [manga-image["image1URL" "image2URL"]] 
     [:img {:src manga-image}[:br] [:br][:br]]) ])) 

此代碼將第一顯示名稱,然後圖片。任何人都可以提出對彼此相鄰插入這些值的方式,加時賽對方(也許是表像執行)的頂部

       Image_name1 
           Picture1 

          Image_name2 
           Picture2 

    Image_name1  Image_name2 
         Picture1   Picture2 

感謝

回答

2

我剛剛意識到正確的代碼是:

(defn view-output [] 
    (view-layout 
    [:h2 "default images"] 
    [:form {:method "post" :action "/"} 
    (interleave 
     (for [manga-name ["image1" "image2"]] 
      [:input {:type "text" :value manga-name}]) 
     (for [manga-image["image1URL" "image2URL"]] 
      [:img {:src manga-image}[:br] [:br][:br]]))])) 

當你想要的清單[:輸入] [:IMG] [:輸入] [:IMG]。

我以前的答案返回[:輸入:IMG] [:輸入:IMG]:

(defn view-output [] 
    (view-layout 
    [:h2 "default images"] 
    [:form {:method "post" :action "/"} 
    (for [[manganame manga-img] (map vector ["image1" "image2"] ["image1URL" "image2URL"]))] 
     (concat 
     [:input {:type "text" :value manganame}] 
     [:img {:src manga-image} [:br ] [:br ] [:br ]]))])) 
+0

嗨丹妮,我收到的無效參數數目for循環後執行你的代碼,但循環參數的數量似乎對我來說確定。你能檢查一下嗎? –

+0

嗨Mitke,我認爲它現在是固定的 – DanLebrero

+4

'(分區2(交叉s1 s2))'是一個簡單的'(地圖向量s1 s2)'。 – kotarak

1
(mapcat (fn [manganame mangaimage] 
      [[:input {:type "text" :value manganame}] 
      [:img {:src mangaimage}] 
      [:br] [:br] [:br]]) 
     ["image1" "image2"] 
     ["image1URL" "image2URL"]) 

([:input {:type "text", :value "image1"}] 
[:img {:src "image1URL"}] 
[:br] [:br] [:br] 
[:input {:type "text", :value "image2"}] 
[:img {:src "image2URL"}] 
[:br] [:br] [:br]) 
+0

謝謝你,你的解決方案在我的另一個例子中工作! –

相關問題