Hallo,
ich habe es jetzt anders gelöst, indem ich einen "bubble sort" benutze.
Jetzt läuft alles wie gewünscht!
Hier der Quellcode:
var inputObj = document.getElementById('search');
var termsRegExp = new RegExp('(?:\*|")([^\*]*)(?:\*|")', 'gi');
var markRegExp;
var sortRegExp;
var matches;
var searchTerms = new Array();
var tableObj = document.getElementById('oneColumn').getElementsByTagName('table')[0];
var tdColl = tableObj.getElementsByTagName('td');
var i, k;
var contentFragments;
var tmpContent = '';
function termSort(a, b) {alert(a + ' : ' + b + "\n(" + searchTerms + ')');
sortRegExp = new RegExp(b, 'i');
if(sortRegExp.test(a)) {alert(1);
return 5;
} else {
return 0;
}
}
function sortTerms() {
// bubble sort
var x, y, tmp;
for(x = 0; x < searchTerms.length; x++) {
for(y = 0; y < (searchTerms.length-1); y++) {
sortRegExp = new RegExp(searchTerms[y+1], 'i');
if(!sortRegExp.test(searchTerms[y])) {
tmp = searchTerms[y+1];
searchTerms[y+1] = searchTerms[y];
searchTerms[y] = tmp;
}
}
}
}
while(matches = termsRegExp.exec(inputObj.value)) {
searchTerms[searchTerms.length] = matches[1];
}
sortTerms();
for(i=0; i<tdColl.length; i++) {
tmpContent = tdColl[i].innerHTML;
for(k=0; k<searchTerms.length; k++) {
markRegExp = new RegExp('(' + searchTerms[k] + ')', 'gi');
tmpContent = tmpContent.replace(markRegExp, '<span class="marker">$1</span>');
}
tdColl[i].innerHTML = tmpContent;
}
Thanx und ciao,
Andreas
"Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design" eines großen Konzerns...)