for creates lazy sequences - this can be a problem if you need side
effects. I suggest using doseq instead.

David

On Mon, Feb 20, 2012 at 11:26 AM, Adrian Mowat <adrian.mo...@gmail.com>wrote:

> Hi Everyone,
>
> I have been coding clojure for a few months and I've just started
> using clojurescript and I am struggling to use for forms inside event
> handlers.  Sorry if this is covered elsewhere but I have searched as
> best I can without finding the answers.
>
> I have an event handler that listens for changes in an <input> element
>
> (def search-input (dom/get-element "search"))
> (def test-area (dom/get-element "test-area"))
> (event/listen search-input
>  :keyup
>  (fn [e]
>    (let [search-results ["a" "b"]]
>      (dom/append test-area (dom/element :p {} (first search-
> results)))
>      (dom/append test-area (dom/element :p {} (second search-
> results))))))
>
> It works fine.  Everytime I type in the input box, some text is
> appended to 'test-area'
>
> However, this doesn't work any more when I switch to using for
>
> (event/listen search-input
>  :keyup
>  (fn [e]
>    (let [search-results ["a" "b"]]
>      (for [x search-results] (dom/append test-area (dom/element :p {}
> x))))))
>
> Stepping through the generated code, I noticed that the generated
> javascript calls the function with null as the first argument (second
> last line below) but I can't figure out why or how to change the
> behaviour.
>
> clojure.browser.event.listen.call(null,
> smws_numbers.cljs.smws_numbers.search_input, "\ufdd0'keyup",
> function() {
>  return function b(c) {
>    return new cljs.core.LazySeq(null, !1, function() {
>      for(;;) {
>        if(cljs.core.truth_(cljs.core.seq.call(null, c))) {
>          var d = cljs.core.first.call(null, c);
>          return cljs.core.cons.call(null,
> clojure.browser.dom.append.call(null,
> smws_numbers.cljs.smws_numbers.test_area,
> clojure.browser.dom.element.call(null, "\ufdd0'p",
> cljs.core.ObjMap.fromObject([], {}), d)), b.call(null,
> cljs.core.rest.call(null, c)))
>        }
>        return null
>      }
>    })
>  }.call(null, cljs.core.Vector.fromArray(["a", "b"]))
> });
>
>
> I fell sure I'm missing something fairly basic, but it's escaping me
> for now so any help you can provide would be greatly appreciated.
>
> Many Thanks
>
> Adrian
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to