Categories:

Putting it to use

Ok, so now you can boast to your fellow scripters that you can get the event object in NS without passing arguments, but when they ask what's the big deal, what can you say? Well, you can't really do anything more than before, but you can make your scripts more foolproof. Here's an example:

function bgChange(layer,bgc) {
if (layer.style) layer.style.backgroundColor=bgc;
else layer.bgColor=bgc;
}

Now, we give this function to thousands of copy-pasters around the Internet, to make it work they would have to:

<ilayer><layer onmouseover="bgChange(this,'green')" onmouseout="bgChange(this,'white')"><span onmouseover="bgChange(this,'green')" onmouseout="bgChange(this,'white')">BG Color Change</span></layer></ilayer>

Now, that doesn't seem like a big deal, does it? Hold up a minute though, let's apply our newfound knowledge of events:

function bgChange(bgc) {
if (!window.event) event=arguments.callee.caller.arguments[0];
var layer=event.srcElement || event.currentTarget || event.target;
if (layer.style) layer.style.backgroundColor=bgc;
else layer.bgColor=bgc;
}

<ilayer><layer onmouseover="bgChange('green')" onmouseout="bgChange('white')"><span onmouseover="bgChange('green')" onmouseout="bgChange('white')">BG Color Change</span></layer></ilayer>

Example:

BG Color Change

Hey, we eliminated the need to pass an argument to reference the layer! We obtained it via:

var layer=event.srcElement || event.currentTarget || event.target;

event.srcElement is for IE4+, event.currentTarget is for Gecko-based browsers, and event.target is for NS4. They refer to the node the event originated from. The reason for the || operator is a thing called "short-circuit validation" which I won't get into here, but trust me, it works.

The only argument we passed to was declare the new bgcolor. For newbies, this could mean a world of difference, firstly less code for them to type out, but more importantly less things for them to remember. It is much easier to remember to just pass a single color argument, instead of pass this, then pass the color, etc. Obviously this doesn't add much functionality, but nevertheless, it is some food for thought.


This tutorial was written and contributed by Jason Davis, a 15 year old who enjoys all sorts of scripting languages. Apart from acting as a moderator on the JK Forum. Jason Davis also is for hire as a freelance web designer, when he is not too busy with high school.