Slashdot Mirror


JavaScript and DHTML Cookbook

Adios077 (Ada Shimar) writes "Ok, so I was reluctant when I first picked up and started reading O'Reilly's JavaScript & DHTML Cookbook. After all, I'm fairly proficient in JavaScript already (yes, get in line to hire me!), and if I needed some cool DHTML scripts, I could just visit a good site like Dynamic Drive. However, the book managed to both surprise and impress me, a great combination to have in a book." Find out why by reading the rest of Shimar's review, below. JavaScript and DHTML Cookbook author Danny Goodman pages 576 publisher O'Reilly & Associates rating 8.5 reviewer Ada Shimar ISBN 0596004672 summary A surprisingly useful JavaScript book, even for people skilled with the language already.

I'll begin my review by making a bold statement -- if you've read and like O'Reilly's Definitive Guides on JavaScript and DHTML, you'll adore this book. I use the word adore very deliberately here, because in my opinion JavaScript & DHTML Cookbook is much easier to love than the gigantic and sometimes monotonous Definitive Guide series. Why, you ask? Let's see -- the book is compact (some 500 pages), concise, and filled with the essence of JavaScript and DHTML as far as what you can create using the language/ technology.

JavaScript & DHTML Cookbook is broken up into 15 chapters, each containing a series of recipes. The chapters are:

  1. Strings
  2. Numbers and Dates
  3. Arrays and Objects
  4. Variables, Functions, and Flow Control
  5. Browser Feature Detection
  6. Managing Browser Windows
  7. Managing Multiple Frames
  8. Dynamic Forms
  9. Managing Events
  10. Page Navigation Techniques
  11. Managing Style Sheets
  12. Visual Effects for Stationary Content
  13. Positioning HTML Elements
  14. Creating Dynamic Content
  15. Dynamic Content Applications

These chapters are used mainly to facilitate the look up of a particular recipe, as each recipe exists and is explained independent of one another. This is consistent with the style of most Cookbooks, and it seems to work well here as well.

If you're a complete novice, you may be wondering at this point the distinction between JavaScript and DHTML. The book doesn't make a conscious effort to differentiate between the two when discussing recipes, and for a good reason. DHTML is basically JavaScript, though the latter draws in your page's HTML and often CSS as well to create something more encompassing.

Ok, on to what's important now -- the recipes themselves. I was expecting a series of flashy, long and tacky JavaScripts you can find in the source of every other site on the web these days, padded with some nonsense accolade like "the web cannot survive without them." Such scripts are mostly counterproductive, and do little to educate a JavaScript learner, let alone a master like myself (hur hur). To my delight, things were the complete opposite. The recipes in JavaScript & DHTML Cookbook are extremely practical, well thought out, and even educational. Discussions like Calculating the Number of Days Between Two Dates, Simulating a Hash Table for Fast Array Lookup, and Transforming XML Data into HTML Tables not only are very useful to the cut-and-paster, they teach even seasoned JavaScripters a thing or two about the language.

The only minor compliant I have with this book is the length of some of the script examples -- they span a little too long to follow effortlessly. The longest script I can recall in the book runs about 5 pages in length. Fortunately, such recipes are few and far in between, and 95 percent of the recipes are extremely short in length and packed with useful information and techniques. For the long scripts, it's easy to see that they exist out of necessity to create and show a fully functional script rather than just to pad pages.

In summary, I walk away from reading JavaScript & DHTML Cookbook with many new tricks up my sleeve, something I had not expected at all. Some good resources online that compliment the reading would be DevEdge's JavaScript Reference and JavaScriptKit's JavaScript tutorials."

You can purchase JavaScript and DHTML Cookbook from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

35 of 153 comments (clear)

  1. You know the world has changed... by daves · · Score: 4, Funny

    ... when a 500 page book is described as "compact".

    --
    People who disagree with you are not automatically evil, greedy, or stupid.
    1. Re:You know the world has changed... by jpkunst · · Score: 3, Insightful

      Most O'Reilly books are actually less voluminous than comparable computer books from other publishers.

      JP

  2. for those too cheap to buy a book by IFF123 · · Score: 5, Informative

    try this site instead:
    http://www.irt.org/index.htm
    if you need more help, you should try marketing instead.

    --
    Who took my tinfoil hat?
    1. Re:for those too cheap to buy a book by Anonymous Coward · · Score: 5, Funny

      Why should I listen to you? You haven't even mastered hyperlinking yet.

    2. Re:for those too cheap to buy a book by staypuft · · Score: 4, Insightful

      LOL - Where are the moderation points when you need them!

      And it is my site too!

      --
      Internet Related Technologies - http://www.irt.org
    3. Re:for those too cheap to buy a book by Bluetrust25 · · Score: 2, Informative

      > And [www.irt.org] is my site too!

      irt.org is a very nice site. Your javascript FAQ has saved my ass more times than I can count. It's certainly the first place I go when I have a javascript problem or just need a quick solution. Mega-kudos to you my friend.

    4. Re:for those too cheap to buy a book by mooman · · Score: 2, Informative

      Ditto on the kudos. I've taught several JavaScript classes for a consulting company and I *always* make sure the students get told about that site.

      irt.org is pretty much my *only* reference for javascript stuff other than my JavaScript Bible...

      Thanks again.

      --
      In the Portland, Ore area and like card games? Check out: http://groups.yahoo.com/group/portlandgames/
    5. Re:for those too cheap to buy a book by staypuft · · Score: 5, Informative

      You are all welcome! Just don't /. it! Bandwidth does not come cheap!

      --
      Internet Related Technologies - http://www.irt.org
  3. DHTML and javascript by ximor_iksivich · · Score: 5, Insightful

    DHTML and javascript make an excellent combination for displaying animated content.. but the question of browser incompatibilty still remains... What we need is a book for making browsers compatible first then have lots of books on the ways to use them... seems logical to me anyway :-)

    1. Re:DHTML and javascript by CowBovNeal · · Score: 3, Interesting

      You're right on that front. Quite a few people use Microsoft FrontPage for building their webpages.
      DHTML support is not that great and even then its a bit cumbersome to use than say Dreamweaver.

      Frontpage is good for those building simple websites without much user configuration. DHTML usually does not figure in it.

      --
      Bush is on fire and its not good for my lungs.
    2. Re:DHTML and javascript by pjotrb123 · · Score: 5, Informative

      Try cross-browser.com for two cross-browser DHTML Javascript libraries.
      One is complete and big, the other is more of a featherweight and a bit less powerful of course.

      --
      I liked my next sig a lot better
    3. Re:DHTML and javascript by DrSkwid · · Score: 4, Interesting

      javascript is polymorphic

      you can code round different browsers by implementing a common API for your applications and let your library do the platform specific work

      I've done plenty of intranet javascipt applications, one of which is an HTML email composer.
      It uses DHTML to drag and resize the html elements around. It works like Quark, you draw a square and type in the text.

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    4. Re:DHTML and javascript by los+furtive · · Score: 4, Informative

      May I also recommend DOM API. They are even making an effort to make sure Safari is supported (once Apple sticks in a bloody debugger).

      --

      I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

    5. Re:DHTML and javascript by On+Lawn · · Score: 2, Insightful

      I don't think "can" has been the question as much as its so plain annoying. I'm sure plenty of people could provide commentary on the issues of portability of code in browsers vs OS's and computers.

      Language portability happens in C all the time, and is managed through a number of very difficult tools. In Javascript, it does it in runtime, figuring out its environment and adjusting which routines will run dynamically. In Java the environment provides the portability.

      Portability is a worth-while goal in that it provides freedom. But is it too much to ask for a Javascript's portability to be pushed from run-time to handled by the environment? It shouldn't be a question of diversity of environments and a willingness to stop trying to screw each other over. Thats all.

      Not to rant on your comment, you just brought up a pet peeve of mine.

  4. Who needs a book? by calebtucker · · Score: 5, Interesting

    Seriously, who needs a javascript and dhtml book with all of the references on the net? Just give me a nice object reference for DHTML (*cough*, MSDN isn't bad.. i hate to admit it) and DevGuru's JavaScript reference.

    --
    My sig can beat up your sig.
    1. Re:Who needs a book? by greenhide · · Score: 2, Informative

      I've used Dynamic HTML, another O'Reilly book, for some time now.

      It's a great reference, and makes it easy to look up all of the various HTML elements, CSS styles, and JavaScript objects.

      The advantage is that it's all in one place, and I can read it while it's lying on my desk, and have a text editor window open to type in my code. It's a pain to constantly switch back and forth between two windows when you're in an intensive coding session -- well, it is for me at least.

      It's like a dictionary. You can use dictionary.com (or a variant therof), but sometimes it's just easier to have the book by your side.

      That being said, there are also some excellent online resources, and it certainly makes good sense to use those as well.

      --
      Karma: Chevy Kavalierma.
  5. Comment removed by account_deleted · · Score: 4, Funny

    Comment removed based on user account deletion

  6. Re:the steps by Anonymous Coward · · Score: 2, Funny
    1.Everyone type as root: rm -rf /
    C:\>rm -rf /
    'rm' is not recognized as an internal or external command,
    operable program or batch file.

    C:\>
    Windows is apparently not vulnerable to your 1337 social enginner hax0ring techniques.
  7. In the future everyone will have the INTERNET by nfotxn · · Score: 3, Funny

    DHTML? I'm having flashbacks to 1996.

    --

    _nfotxn

  8. "Often with CSS"? by SvendTofte · · Score: 4, Interesting

    "often with CSS"? That doesn't even make sense.

    DHTML was coined, as the combination of HTML providing structure, CSS providing presentation, and JavaScript providing logic.

    If you just use HTML and JavaScript, you're just doing a plain HTML page with logic (like form checkers).

    I would also note, that JavaScript object are already hash tables, so "simulating hash arrays" isn't really needed (or I fail to see where it becomes relevant?)

    object["myprop"] == object.myprop

    There's only one book JavaScript programmers need, the rhino book. It's all in that. Everything else is just experience, and cannot be conveyed by a bunch of scripts. Or if it can convey something, it's most likely because said reader didn't catch it in the Rhino book ;)

  9. A Fan of Goodman's Books by borkus · · Score: 4, Informative

    I got the first Dynamic HTML when it came out then bought the second edition and the JS/DHTML cookbook.

    The cookbook is great for newcomers to web development. It is based on common tasks, i.e. "Allowing Only Numbers (or Letters) in a Text Box". It then shows how to combine the HTML, CSS and Javascript to get carry out that task. I can't count how many times that a co-worker has asked me a Javascript question and I've shown them the answer straight out of that book. For programmers new to web development, the largest obstacle isn't HTML or Javascript syntax; it's how to put together those elements. I have yet to see a book that does it as clearly as the the JS and DHTML Cookbook. For someone starting out on their first web based projects, I'd strongly recommend DHTML - the Definitive Guide and the JS/DHTML cookbook as the best references for getting started.

  10. Save $1.18 more and free shipping by A+nonymous+Coward · · Score: 2, Informative

    I can karma whore too :-)

    Try Books-A-Million and avoid supporting Amazon patents and non-privacy.

  11. Not JavaScript!!! by AKAImBatman · · Score: 2, Interesting

    Personally, I tend to dislike JavaScript. It has its uses, but JS programs quickly turn into huge messes that Anderson himself couldn't debug. Of course, most of these problems stem from the lack of engineering that goes into most Javascript code. If you define clear APIs (like any good engineer should) Javascript ends up being not half bad.

    BTW, can anyone spot the problem with this code:

    function myfunc1()
    {
    for(i=0; i<10; i++) myfunc2(i);
    }

    function myfunc2(value)
    {
    for(i=0; i<15; i++) //do something;
    }

    Here's a hint for you. "i" in myfunc1() is not what you expect it to be.

    1. Re:Not JavaScript!!! by SCHecklerX · · Score: 3, Insightful
      My favorite javascriptism is using + as both a numerical addition and a string concatenator, which, of course, is all kinds of fun in a language where you don't type your variables:

      a = 1 + 4 would yield a = '14'. Irritating.

  12. Re:DHTML and javascript compatibility by borkus · · Score: 3, Informative

    The book has a compatibility legend for each recipe; most of the recipes work with IE 4 and NN 4.

    DOM support has become widespread enough that you can easily create DHTML features on a page that will work for over 99% of your visitors. The worst thing so far has been some of the positioning properties; however, some of that is due to the surfeit of properties used by IE.

  13. Example code, for free by Anonymous Coward · · Score: 4, Informative

    BTW, you can download example code for this book from here.

  14. What IS DHTML anyway? by aflat362 · · Score: 3, Informative

    I was under the impression that DHTML was just a buzzword. And that when anyone was talking about DHTML what they really meant was HTML pages with JavaScript or VBScript in them to make them do more than static HTML. Am I correct? If I'm wrong - than what the hell is DHTML?

    --

    Conserve Oil, Recycle, Boycott Walmart

  15. Is there work for a pure DHTML programmer? by John+Seminal · · Score: 3, Interesting

    I do not think there is work for someone to do DHTML programming. Everything I have seen is going to servlets. Nobody is putting up static pages (No matter what anyone says, JavaScript does not make a page dynamic). Why pay someone 20 dollars an hour in today's market when there are hardcore programmers unemployed, who can write Java servlets and JSP?

    --

    Rosco: "If brains were gunpowder, Enos couldn't blow his nose."

  16. Not Microsoft by CausticPuppy · · Score: 2, Informative

    or rather, not JUST microsoft.

    DHTML itself is not a technology... it's simply a method of using existing technologies (javascript, CSS, HTML form elements, etc) to create client-side dynamic web pages.

    Microsoft and Netscape both created implementations of DHTML which were largely incompatible with each other, leading to many programmer headaches.

    W3C is working on a standard as we speak, which is largely dependent on the standardized Document Object Model.

    More info...

    http://www.talltech.com/student/imos98student/j_ ch u/dhtml/standards.htm

    Microsoft's existing standard will be very close to the final W3C standard. Netscape's was even more proprietary because it introduced new tags that are not even in the HTML 4.0 standard (Layers, anyone?)

    --
    -CausticPuppy "Of all the people I know, you're certainly one of them." -Somebody I don't know
  17. Re:$4 less and free shipping! by greenhide · · Score: 2, Insightful

    Ha ha...See postings above to see irony in the -1 offtopic mod. The guy who gives the amazon post is modded as informative -- gee, who woulda thunk it? "Amazon is selling an O'Reilly book", now that's informative -- and trying to make money off of it too. This last post, which offers a much better retailer (in terms of price), is modded as offtopic. My suggestion? Don't mod these kinds of comments at all. Everyone knows that you can buy books at online retailers.

    At least, don't mod them until they create the

    +1 Offered Lazy Asses Like Me the Link

    moderation.

    --
    Karma: Chevy Kavalierma.
  18. DHTML = Script manipulated HTML by JohnDenver · · Score: 2, Informative

    What DHTML is not

    While Dynamic HTML can be simplified as JavaScript + HTML + CSS, I can think of many instances where these technologies are use and it still can't be considered dynamic HTML.

    Ex: Using JavaScript to validate a form is not DHTML.

    DHTML - My definition

    Dynamic HTML - Any HTML content that is either dynamically created or altered by a client-side scripting language such as JavaScipt or VBScript.

    To put it simply: If you're changing the page layout on the fly, then you're doing Dynamic HTML.

    --
    "Communism is like having one [local] phone company " - Lenny Bruce
  19. What problem? by djeaux · · Score: 2, Insightful
    BTW, can anyone spot the problem with this code:

    Sure can. You redefine the variable i. Departing radically from /. convention, I actually pasted your code into my trusty text editor to see if there was some cool trick that I didn't notice just reading it & found that it behaved exactly as I expected:

    1. myfunc1() passes 0 (zero) to myfunc2() on the first iteration of the myfunc1 loop.
    2. myfunc2() then increments i stepwise to 14 whereupon it returns to myfunc1() & ends because 14 > 10.
    In fact, this same code (with slight syntax changes) produces the same result in Perl unless 'i' is localized in each function & the value passed to myfunc2 is handled as @_. I'm pretty certain the result would also be the same in C, but here I bow to laziness & /. norms. In fact, I would regard a different outcome as a "problem". :-D

    Are you trying to illustrate the sloppy code that happens because JavaScript is easy & free & a bunch of folks with no concept of good coding practice can just kludge away? Or is there something more substantive to the example?

    --
    "Obviously, I'm not an IBM computer any more than I'm an ashtray" (Bob Dylan)
  20. Beware: This book is not for everyone... by brundlefly · · Score: 2, Interesting

    I bought this book, thinking that if it is anywhere near as useful as the Perl Cookbook, then I would be getting my US $39.95 worth. I was very disappointed with the book and would not recommend it to JavaScript/DHTML experts.

    The problem with this book is that is almost completely tailored to the person who hasn't much experience with these technologies. For example, the section on the String object gives newbie tips like:

    Use += to concatenate strings.

    (Whoo-hoo! Thank you Danny Goodman, where can I mail my check to?)

    In this very same section on String concatenation it completely fails to discuss the geometric performance loss experienced as strings become larger and larger. Why wouldn't you discuss this? What I would expect to see is a discussion of how you can implement your own version of a StringBuffer, similar to Java, by using Array operators.

    There is almost no discussion of client-side XML, absolutely nothing on XSL. If you do much dynamic in-place refresh of data or styles, this book will not help you much.

    The book might be fine for novices and maybe even intermediate developers, but for experts it falls very flat. I skim the book once a week or so hoping to glean something new, and I'm always disappointed. Caveat Emptor.

    If you are a serious developer you should probably just have your employer buy you a subscription to the O'Reilly Safari online bookshelf, and then you can see for yourself whether or not this book is any help to you.

    (BTW, for those have said that you cannot get work as a DHTML programmer, you are so wrong. I make a comfortable six-figure salary doing this work for governments and large corporations. If you are good enough at what you do you can always find someone willing to pay you for it, and DHTML is no exception.)

  21. Actually, DHTML is a real and specific thing by JohnDenver · · Score: 2, Informative

    I don't you followed my definition:

    Dynamic HTML is a real and valid term which covers:

    1. Dynamically creating HTML on the client.
    2. Dynamically altering HTML on the client.

    You *ARE* doing Dynamic HTML if you are using JavaScript and CSS to *DYNAMICALLY* create/alter HTML on a page.

    You *AREN'T* doing Dynamic HTML if your use of JavaScript and CSS neither creates or alters the HTML on a page.

    In conclusion: Dynamic HTML is the process of dynamically creating and altering HTML in a web page.

    (Sorry for being super-redundant)

    --
    "Communism is like having one [local] phone company " - Lenny Bruce
  22. Sure! In web design, and JavaScript components by JohnDenver · · Score: 2, Interesting

    I've found that there is a growing demand for web designers who can use DHTML as an alternative to Flash, especially considering most of today's web-browsers have become considerable more compatible in the last few years.

    You should also note the increasing growing market of selling JavaScript components like Dynamic Menus, Calendar Pickers, Tables, and other goodies.

    Obviously DHTML is only half the solution for most problems, so we find that most DHTML programmers usually use DHTML in conjunction with ASP, PHP, JSP or some other server-side technology.

    Not to mention the learning curve from something like JavaScript to PHP is fairly short. So the incentive to isolate oneself in a DHTML-only world is probably slim.

    --
    "Communism is like having one [local] phone company " - Lenny Bruce