itsallkizza
12-02-2008, 07:07 PM
People keep asking for the same little Javascript snippets over and over so I figured I'd just start posting them here:
<script type="text/javascript">
// <![CDATA[
/* Remove Repeated Values In An Array - Type Sensitive */
function uniquifyArray(arr)
{
var new_arr = new Array();
var arr_contains = function(arr,what)
{
for (var i=0;i<arr.length;i++)
{
if (arr[i] === what) return true;
}
return false;
}
for (var i=0;i<arr.length;i++)
{
if (!arr_contains(new_arr,arr[i])) new_arr[new_arr.length] = arr[i];
}
return new_arr;
}
/* Coordinates and Dimensions of HTML Elements */
function getXYOfElement(elm)
{
var x = 0;
var y = 0;
if (elm.offsetParent)
{
do
{
x += elm.offsetLeft;
y += elm.offsetTop;
}
while (elm = elm.offsetParent);
return [x,y];
}
return false;
}
function getWidthHeightOfElement(elm)
{
if (elm.offsetWidth && elm.offsetHeight) return [elm.offsetWidth,elm.offsetHeight];
return false;
}
/* Matching Phrase Finder */
// accepts an array of strings and an optional min length as input
// it returns an array that includes all max-size phrases that are common to all inputted strings
function findInCommon(str_arr,min)
{
if (!min) min = 1;
var phrases = new Array();
var inAll = function(strs,str)
{
for (var i=0;i<strs.length;i++)
{
if (strs[i].indexOf(str) == -1) return false;
}
return true;
}
for (var i=0;i<str_arr[0].length-min;i++)
{
var phraseToAdd = str_arr[0].substr(i,min);
if (inAll(str_arr,phraseToAdd))
{
var a = 1;
while (inAll(str_arr,str_arr[0].substr(i,min+a)) && i+a < str_arr[0].length) phraseToAdd = str_arr[0].substr(i,min+(a++));
phrases[phrases.length] = phraseToAdd;
i += a;
}
}
return phrases;
}
/* TEST
alert(findInCommon(["the dog ate my homework","the cat ate my homework","i ate my homework"],3));
*/
//* Check If Element Has Class */
function hasClass(element,name)
{
var element_class = "";
if (element.attributes["class"]) element_class = element.attributes["class"].value;
else if (element.className) element_class = element.className;
else if (element.getAttribute) element_class = element.getAttribute("class");
var classes_to_check = element_class.split(" ");
for (var i=0;i<classes_to_check.length;i++)
{
if (classes_to_check[i] == name) return true;
}
return false;
}
/* Check If Variable Exists */
function checkVarExists(var_name)
{
if (eval("typeof("+var_name+")") == "undefined") return false;
return true;
}
if (typeof(some_var) == "undefined") var variable_doesnt_exist = true;
// Note: In truth, its better form to use the typeof(some_var) check instead of the function
// because it uses an eval AND it requires a string, which may not serve the desired purpose.
// This is because in Javascript, references to variables and objects are not passed to
// functions, evaluations (clones) of them are.
/* TEST
alert(checkVarExists("some_var"));
if (typeof(some_var) == "undefined") alert("variable doesnt exist");
*/
/* Join and Split Two-Dimensional Arrays */
function join2DArray(arr,sep1,sep2)
{
if (sep1 == undefined || sep1 == null) sep1 = "";
if (sep2 == undefined || sep2 == null) sep2 = "";
for (var i=0;i<arr.length;i++)
{
if (arr[i].join) arr[i] = arr[i].join(sep2);
}
return arr.join(sep1);
}
function split2DArray(str,sep1,sep2)
{
if (sep1 == undefined || sep1 == null) sep1 = "";
if (sep2 == undefined || sep2 == null) sep2 = "";
var arr = str.split(sep1);
for (var i=0;i<arr.length;i++) arr[i] = arr[i].split(sep2);
return arr;
}
/* TEST
var my_arr = [[1,2,3],[4,5,6],[7,8,9]];
var my_arr_joined = join2DArray(my_arr,"|",",");
alert(my_arr_joined);
var my_arr_resplit = split2DArray(my_arr_joined,"|",",");
alert(my_arr_resplit[0][1]);
*/
// ]]>
</script>
<script type="text/javascript">
// <![CDATA[
/* Remove Repeated Values In An Array - Type Sensitive */
function uniquifyArray(arr)
{
var new_arr = new Array();
var arr_contains = function(arr,what)
{
for (var i=0;i<arr.length;i++)
{
if (arr[i] === what) return true;
}
return false;
}
for (var i=0;i<arr.length;i++)
{
if (!arr_contains(new_arr,arr[i])) new_arr[new_arr.length] = arr[i];
}
return new_arr;
}
/* Coordinates and Dimensions of HTML Elements */
function getXYOfElement(elm)
{
var x = 0;
var y = 0;
if (elm.offsetParent)
{
do
{
x += elm.offsetLeft;
y += elm.offsetTop;
}
while (elm = elm.offsetParent);
return [x,y];
}
return false;
}
function getWidthHeightOfElement(elm)
{
if (elm.offsetWidth && elm.offsetHeight) return [elm.offsetWidth,elm.offsetHeight];
return false;
}
/* Matching Phrase Finder */
// accepts an array of strings and an optional min length as input
// it returns an array that includes all max-size phrases that are common to all inputted strings
function findInCommon(str_arr,min)
{
if (!min) min = 1;
var phrases = new Array();
var inAll = function(strs,str)
{
for (var i=0;i<strs.length;i++)
{
if (strs[i].indexOf(str) == -1) return false;
}
return true;
}
for (var i=0;i<str_arr[0].length-min;i++)
{
var phraseToAdd = str_arr[0].substr(i,min);
if (inAll(str_arr,phraseToAdd))
{
var a = 1;
while (inAll(str_arr,str_arr[0].substr(i,min+a)) && i+a < str_arr[0].length) phraseToAdd = str_arr[0].substr(i,min+(a++));
phrases[phrases.length] = phraseToAdd;
i += a;
}
}
return phrases;
}
/* TEST
alert(findInCommon(["the dog ate my homework","the cat ate my homework","i ate my homework"],3));
*/
//* Check If Element Has Class */
function hasClass(element,name)
{
var element_class = "";
if (element.attributes["class"]) element_class = element.attributes["class"].value;
else if (element.className) element_class = element.className;
else if (element.getAttribute) element_class = element.getAttribute("class");
var classes_to_check = element_class.split(" ");
for (var i=0;i<classes_to_check.length;i++)
{
if (classes_to_check[i] == name) return true;
}
return false;
}
/* Check If Variable Exists */
function checkVarExists(var_name)
{
if (eval("typeof("+var_name+")") == "undefined") return false;
return true;
}
if (typeof(some_var) == "undefined") var variable_doesnt_exist = true;
// Note: In truth, its better form to use the typeof(some_var) check instead of the function
// because it uses an eval AND it requires a string, which may not serve the desired purpose.
// This is because in Javascript, references to variables and objects are not passed to
// functions, evaluations (clones) of them are.
/* TEST
alert(checkVarExists("some_var"));
if (typeof(some_var) == "undefined") alert("variable doesnt exist");
*/
/* Join and Split Two-Dimensional Arrays */
function join2DArray(arr,sep1,sep2)
{
if (sep1 == undefined || sep1 == null) sep1 = "";
if (sep2 == undefined || sep2 == null) sep2 = "";
for (var i=0;i<arr.length;i++)
{
if (arr[i].join) arr[i] = arr[i].join(sep2);
}
return arr.join(sep1);
}
function split2DArray(str,sep1,sep2)
{
if (sep1 == undefined || sep1 == null) sep1 = "";
if (sep2 == undefined || sep2 == null) sep2 = "";
var arr = str.split(sep1);
for (var i=0;i<arr.length;i++) arr[i] = arr[i].split(sep2);
return arr;
}
/* TEST
var my_arr = [[1,2,3],[4,5,6],[7,8,9]];
var my_arr_joined = join2DArray(my_arr,"|",",");
alert(my_arr_joined);
var my_arr_resplit = split2DArray(my_arr_joined,"|",",");
alert(my_arr_resplit[0][1]);
*/
// ]]>
</script>