Dustin Diaz have recently written an article on Top 10 custom JavaScript functions of all time. So I thought that I would write about all the functions on my common.js file.
addEvent()
The competition for addEvent was just over - so I was not able to include this function in any of the projects I do - but all my future projects will have this.
getElementsByClassName()
A very important function for me. If multiple elements in a html document must be processed, I always use this. I have spoken about my getElementsByClassName() function earlier, but I will include the code here...
//Get all the elements of the given classname of the given tag.
function getElementsByClassName(classname,tag) {
if(!tag) tag = "*";
var anchs = document.getElementsByTagName(tag);
var total_anchs = anchs.length;
var regexp = new RegExp("(^|\\s)"+classname+"(\\s|$)");
var class_items = new Array()
for(var i=0;i<total_anchs;i++) { //Go thru all the links seaching for the class name
var this_item = anchs[i];
if(regexp.test(this_item.className)) {
class_items.push(this_item);
}
}
return class_items;
}var regexp = new RegExp("\\b"+classname+"\\b"); to var regexp = new RegExp("(^|\\s)"+classname+"(\\s|$)");.
Thanks to Dustin Diaz for pointing it out(see comments for more information.)Function $()
My dollar function is very simple. Just call it like this $("id"); and it will return the element with that id. The code is.
function $(id) {
return document.getElementById(id);
}Dump Function - for debugging.
The dump function will output an array - with a better formatting so that humans could understat what is in the array.
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += " ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') { //If it is an array,
dumped_text += level_padding + "'" + item + "' ...\n";
dumped_text += dump(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}This is how the function is called. In this example we will use a complex associative and list combination array as the argument.
//Calling the function...
var arra = new Array("Hloo",'s',23,23.1,"Hello World");
var assoc = {
"val" : "New",
"number" : 14,
"theting" : arra
};
alert(dump(assoc));
The result will be shown in the following format.
'val' => "New"
'number' => "14"
'theting' ...
'0' => "Hloo"
'1' => "s"
'2' => "23"
'3' => "23.1"
'4' => "Hello World"


4 Comments:
Try class="foo-bar" and getElementsByClass(document,"foo","*");
Your getElementsByClass function will incorrectly grab "foo-bar".
Take a look at the differences between that one and mine :). I remember that I fell into that same trap earlier thinking the word boundary would be ok.
Thanks for pointing that out - I never thought about he '-' charector. I have corrected the error.
That dollar function is clever. Thanks for the idea !
Thanks for getElementsByClassName(), this will be verry helpfull to me.
Post a Comment