Обращая внимание на мысль Андре о том, что есть более понятные способы, вот код, переработанный, чтобы сделать его независимым от количества столбцов, а в остальном более общим.
function changeSort(th){
var titleTemplates = {
asc: 'sort ascending %s',
desc: 'sort decending %s',
dflt: 'sort by %s'
};
titleTemplates.get = function(key, txt){
var t = this[key] || this.dflt;
return t.replace('%s', txt);
};
var headerRow = th.parentNode;
var cells = headerRow.getElementsByTagName('th');
for(var i=0; i<cells.length; i++){
var c = cells[i];
var s = c.getAttribute('sortCode');
var s_ = (c !== th) ? '' : (!s || s == 'desc') ? 'asc' : 'desc';
c.setAttribute('sortCode', s_);
c.title = titleTemplates.get(s_, c.innerHTML);
}
}
проверено в Опере 11,61
Вы можете (и действительно должны) пойти дальше, прикрепив обработчик щелчка к элементам TH в javascript, а не в HTML.