My Books
Yes, I did write some words and put them with ink on dead trees for you to read in those few moments when the wireless is down again.
If you know someone who wants to have a great web site without coding, this is a good choice.
Fully authored books
Beginning JavaScript with DOM Scripting and Ajax: From Novice to Professional
This is what it says on the tin: a JavaScript book that starts at zero and ends with Ajax. All the way I made sure I praise and explain unobtrusive scripting and working in a way that enables people that come after you to take over work from you without despairing. You can get the code at beginningjavascript.comWeb Development Solutions: Ajax, APIs, Libraries, and Hosted Services Made Easy
This book was technically co-authored but Norm pulled out halfway through, so most was written by me. The book is a great one, but never got as successful as the Beginning JavaScript one as the title is misleading. We planned and executed the book as a step by step blueprint to create a web site using WordPress as the base and several online services as data sources (flickr, last.fm, youtube, del.icio.us).If you know someone who wants to have a great web site without coding, this is a good choice.

June 23rd, 2008 at 9:18 pm
I’m really enjoying your book “Beginning JavaScript with DOM Scripting and Ajax: From Novice to Professional”
I was wondering something on your lastSibling, firstSibling and closestSibling functions, wouldn’t it be better to test for the tempObj in the return line and then check for the nodeType. It throws an error if there’s no parentNode (Like the on the HTML node).
And also, why do you choose to return false instead of “undefined” which I think conforms more with how javascript returns results for test such as these? Not a big deal, but I am a little curious.
example: return (tempObj && tempObj.nodeType 1) ? tempObj: “undefined”;
instead of: return tempObj.nodeType 1 ? tempObj: false;
Hope you plan on writing some more, I appreciate your work.
Thanks
July 8th, 2008 at 11:31 am
Cheers Doug. All good points, the reason I used them instead of your proposal is that is an oversight. You spotting it shows me I have done something good though :)
July 28th, 2008 at 8:42 am
Props for Beginning JavaScript: it has hardly left my desk for months. Very thorough and accurate! It is the JS reference that I keep coming back to. Beats the pants off the competition. Keep up the good work!
October 24th, 2008 at 4:18 am
to select a number in 1,2,3,4,5,6 randomly,
why using
Math.round(Math.random()*5)+1
instead of
Math.floor(Math.random()*6)+1
the second should be a more reasonable one