Sunday, January 5, 2014

Re: [Rails] Working with JavaScript

What does your JavaScript console say? Is the compiled JS in the page before the link appears to call it? Is the CS-generated JS wrapped in a closure of some sort? (I'm thinking here that your function may not be in the global scope.)

It's much better practice to establish listeners in your script, and invoke them lazily, rather than writing inline (so-called DOM Level 0) scripts in your page code.

Consider this (which you must add at the very end of the page code, not the beginning):

document.addEventListener('click', evt){
if(this.tagName == 'A'){
if(this.readAttribute('data-paint')){
this.style.backgroundColor = this.readAttribute('data-paint');
}
}
});

That would interact with this HTML:

<a href="#" data-paint="#990000">Paint it red</a>

You could extend this pattern by adding a data-text-color attribute, and add a handler for that in the one function body. There's probably little difference in following this pattern versus your example when there's a few links on the page, but if there were thousands, this method would be measurably faster to load and evaluate.

Walter

On Jan 5, 2014, at 11:07 AM, izik shapira wrote:

> Hi,
> I turn this code into CoffeeScript:
>
> paintIt = (element, backgroundColor, textColor) ->
> element.style.backgroundColor = backgroundColor
> if textColor?
> element.style.color = textColor
>
> and this code I turn to html.rb
>
> <a href="#" onclick="paintIt(this, '#990000')">Paint it red</a>
>
> it not worked fine, I see the link but it's not Paint it red!
>
> What Did I Do Wrong?
>
> thank, Izik
>
> --
> Posted via http://www.ruby-forum.com/.
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/1a13b315775cf3863839abaaded7306f%40ruby-forum.com.
> For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/F1B1FA98-9C03-49F3-9E3B-08F724FAA610%40wdstudio.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate