I have been programming with JavaScript since late 1995 when I wrote the first version of Joust. JavaScript programming is not my main job but, with Joust support and many years doing double duty as my company's Webmaster, I have picked up a few hints and tips along the way. As and when I have time, I will try to add some of the lessons I had to learn the hard way to this area of the web site.
If you want to learn JavaScript then I suggest you get a book. Although some purists may disagree with me, JavaScript is a "proper" programming language. If you want to do more than a few rollover effects you will not be able to copy-and-paste your way through it. You will need to learn to program.
So, if you're not already a programmer, find yourself a book on programming. Although it will probably help, it doesn't have to be a JavaScript book. Programming is not about a particular language. It's about understanding what's really going on inside your computer and the techniques used to manipulate it. Understanding basic concepts like variables, pointers, references, data structures (arrays, linked lists, trees, etc.), scoping, loops, recursion etc. will take you a long way. It might sound scary but it's not that bad. If you take a little time to understand what happens inside your computer you'll realise how dumb it really is, you'll stop thinking of it as some intelligent thing with a mind of it's own and, suddenly, it's not scary anymore.
Next, find yourself something "real" to do. My job involves teaching a new programming tool to experienced developers and I know from experience that you only learn through doing. Copying a "hello world" example from a book or copy-and-pasting stuff from someone elses code is no good. You might think you can read the code and understand it but there is no substitute for starting with nothing and writing (and debugging) your own code (and you will get a much better sense of satisfaction when it's done).