Simply JavaScript

Reviewed July 5th, 2007 @ 10:33PM

[Book Cover] Simply JavaScript

Simply Javascript by Kevin Yank and Cameron Adams lives up to the subtitle of Everything you need to learn Javascript from scratch. Javascript is a tricky subject to tackle. The Internet is full of Javascript snippets and code samples everywhere you look. Often times these code samples are less than satisfactory when you are addressing accessibility within your website. Many of the code samples contain outdated and proprietary code samples, making it a task to work out kinks and debug. The good news with this book is that they stick to a standard. All code used in this book uses object literal notation. Sticking to a coding style and format helps make this book an incredible read. Throughout this book you will learn the underpinnings of Javascript and how you can achieve different tasks.

Learning Javascript from scratch can be a daunting task. After all, there are several libraries and free scripts that you can essentially download and plugin to your website. But what happens when things go wrong? What happens when you need to modify the script to fit your needs? Having a solid foundation and understanding of Javascript will help you as you begin to develop for your own needs. This book gently walks you through the steps you need to take to achieve that solid foundation.

  • Chapter 1 starts off with a brief primer of unobtrusive Javascript and it’s role in the three layers of the web. HTML is your content. CSS is your presentation. Javascript is your behavior. These three aspects need to be separate from one another and also co-exist at the same time. Gone are the days of inline event handlers and functions. Using the power of the DOM you can rest assured your HTML will be pure and your applications will work flawlessly without Javascript enabled.

  • Chapter 2 spends some time setting up the foundation for beginners. This chapter walks you through statements, comments, variables and different variable types, conditions and loops, functions, and objects. Whew, that was a mouthful. This is where the standard of coding is introduced that will be used throughout the rest of the book. Things such as code indenting and formatting are touched on as well. This allows you to write clean code that is readable by you and other developers who may be working with your code. As stated earlier, all code uses object literal notation, and therefore this is explained in this chapter. A few examples are given and we are off to building some handy tools.

  • Chapter 3 gives you the necessary road map. This chapter is devoted to traversing the Document Object Model. A few helper classes are shown here that will allow us to retrieve elements by class name, add class names to an element, remove class names from an element, and check for the existence of class names within in an element. These will be used extensively throughout the book and are placed in their Core object. In addition to being able to traverse by class names, there is also the list of standard elements such as getElementById and getElementsByTagName. With these powerful tools at our finger tips we can now begin altering our pages as deemed necessary. The example given here is one of striping table rows. For those who don’t do this on the server side, this simple task allows you to stripe your rows via the DOM.

  • Sure it’s cool to add stripes to a table, but how can we do more? Chapter 4 is all about Events and the power they add to interacting with the DOM. The brief history lesson in this chapter helps us understand the different interpretations of different browsers and how we can use object detection to abstract these tasks into the Core object. Event Listeners and Event Handlers are both discussed in great detail. We move on to two working examples: Rich tooltips and Accordion. Rich tooltips are used to extract information from our title attribute and then apply them to a more stylish hover tooltip effect. Accordion allows us to save space on our pages by gradually showing the content as it is requested by either a click or keyboard event.

  • Chapter 5 gets us moving even more. This chapter is devoted to Animation and is probably one of the more complex chapters of the book. We are introduced to two methods, setTimeout and setInterval. Working mainly with setTimeout we are able to achieve our animation effects. This chapter looks at the principles of animation and an example of path-based motion with a soccer ball. We then use our new-found knowledge to extend our tooltip to show after a specified time, and our accordion is given a nice slide effect. We simply extend the code from our previous chapter to make these things happen. This is a good example of the benefits of working with objects and decoupling inside of your Javascript.

  • Chapter 6 gives use a few more tools to work with Forms. Forms are never easy to manipulate. Whether it be the style or the behavior. The beginning of the chapter starts with smaller scripts and examples of manipulating forms. This is done by specifying dependent fields and only showing them when necessary, and creating cascading menus from a select and it’s optgroup. We then move on to some more advanced features for validation and creating a custom slider. These have been presented before in other areas, so nothing is really new in this area. However, this is all a part of understanding the bigger picture and the possibilities. It is about getting the creative juices flowing.

  • Chapter 7 discusses the inevitable testing for errors and debugging your application. We walk through the different types of erros: syntax, runtime, and logic. With each of these code samples are given with errors. We then use the tools of the browsers to make sense of their often cryptic error messages. In order to debug Javascript there is an invaluable tool in Firebug, a plugin for the popular Firefox web browser.

  • More interaction is still left as chapter 8 moves us to AJAX. Some very strong disclaimers are made as to when and where to use the right tool for the right job. Caution is also given in regards to assistive devices such as screen readers. With the warnings out of the way, we move to a some practical examples. The first is a small weather widget and the second is an extension to form validation.

  • The book finishes off by looking too the future of Javascript. Discussions of Rich Internet Applications and their place inside of the web help to stimulate your mind as you think about the possibilities. Not only about building applications on the web, but also using Javascript for such things as Dashboard Widgets and even browser development. In the hands of responsible developers, the future looks exciting for Javascript.

  • The Appendix is a very important part to this book, and I like its placement. The appendix goes through the Core methods used throughout the entire book. But why wait until the end of the book? Had this chapter shown up earlier it would have caused more confusion than necessary, and more explanation that necessary. As a reader you have the option to read this appendix first, but I felt it was well placed and covered thoroughly at the end of the book. By this point in the book you will have gained enough knowledge to dive in, whereas the beginning might have left you asking all the wrong questions.

If you have been developing Javascript for any amount of time, then you are most likely aware of the array of libraries available to us. These include Prototype, Scriptaculous, jQuery, Dojo, MooTools, and YUI to name a few. Each chapter of this book ends with a discussion of the libraries and how they can be used to help achieve the different tasks. Some libraries can achieve some tasks, while others still take a little work. The authors give a fair coverage to the libraries but do not dwell on them as the end-all-be-all of Javascript. If anything, the author’s stress that you understand your Javascript at the core and know why you are doing what you are doing. This book sticks to unobtrusive principles and doesn’t take shortcuts. The authors strive to make sure the code is of high quality and compatible cross-browser, but they never take the easy way out. Things such as innerHTML are put away in favor of building the DOM on the fly. This adds to the overall excellent quality of this book. The excellent code coupled with beautiful illustrations make this book easy to take small chunks at a time.