Andreas Dölling: Problem gelöst

Beitrag lesen

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...)