Hi David That worked a treat. Thanks!
Adrian On Feb 21, 4:55 am, David Nolen <dnolen.li...@gmail.com> wrote: > 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