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

Reply via email to