# Thursday, 23 January 2014

I began to write web applications in the 1990s and, from the beginning, I understood that client-side scripting would enhance my applications. If I wanted to update part of a web page, client-side scripting could do so quickly and elegantly and without sending a new request to the server or refreshing the entire page and I knew it.

JavaScript quickly became the de facto language of the web and, unfortunately, I was never very good at JavaScript. One reason I struggled with JavaScript was because each browsers implemented JavaScript in its own way and sometimes the language diverged from one browser to the next. For example, the following JavaScript code is necessary to perform the simple task of retrieving an element from a web page:

var id = "Div1";
var elm = null;
  if (document.getElementById)
    elm = document.getElementById(id);
  else if (document.all)
    elm = document.all[id];
  else if (document.layers)
    elm = document.layers[id];

Notice there are several different JavaScript commands that retrieve an element by its ID. Some commands work in some browsers, but not in others. The code snippet above has to test the validity of each command until it settles on one that works within the current browser.

This simple task is complicated by the different JavaScript engines.

Eventually, I discovered jQuery and the problem of cross-browser client-side program went away. jQuery is a JavaScript library that allows a developer to write code that works across disparate browsers, without the necessity of trying multiple commands. The jQuery core library takes care of the different JavaScript implementations. For example, the code above is simplified in jQuery to

var elm = $("#Div1");

This is a simple task, yet it underscores the terseness and simplicity of jQuery. All the cross-platform code is abstracted away when I use jQuery, making my JavaScript much easier to read and maintain.