Code:
if (document.getElementsByClassName == undefined) {
document.getElementsByClassName = function(className)
{
var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
var allElements = document.getElementsByTagName("*");
var results = [];
var element;
for (var i = 0; (element = allElements[i]) != null; i++) {
var elementClass = element.className;
if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass)) {
results.push(element);
}
return results;
}
}
}
function sortable() {
var sortable = document.getElementsByClassName('sortable');
for(var i in sortable) {
element = sortable[i];
if (element.id != undefined) {
var sort_id = element.id;
document.getElementById(sort_id).addEventListener('click', sort, false);
}
}
}
function sort() {
if (last_sorted == this.id + "desc") {
last_sorted = this.id + "asc";
order = this.id + " asc";
if (search_temp != undefined) {
my_table(limit, offset, order, search_temp);
} else {
my_table(limit, offset, order, filter);
}
} else {
last_sorted = this.id + "desc";
order = this.id + " desc";
if (search_temp != undefined) {
my_table(limit, offset, order, search_temp);
} else {
my_table(limit, offset, order, filter);
}
}
}
This is a wee bit of code that is part of my javascript for getting a table from jsonp data. This works on Safari, Opera, Chrome, Firefox and mobile Safari.
My problem is i can't get this working on IE 8 which is the minimum supported browser i need to support, while i am aware jQuery can do this for my own 'joy' just now i am doing this with pure JavaScript which has proved clean sailing in getting the jsonp cross domain, searching, paginating etc.
Any help would be greatly appreciated, i believe attachEvent() is the way to go but it does not support 'this'.