Avatar billede goose Nybegynder
01. juni 2011 - 17:58 Der er 4 kommentarer

Highlight tekst, men ikke hyperlinks

Jeg bruger nedenstående funktion til at highlighte noget tekst. Problemet er bare, at hvis det ord der skal highlightes indgår i et hyperlink, altså inde i selve a href, så går det helt galt. Hvordan løses det?

Function highlight(strInput,findStr)
  Set objReg = New RegExp
  objReg.Global = true
  objReg.IgnoreCase = True
  objReg.Pattern = "("&findStr&")"
  highlight = objReg.Replace(strInput, "<span style=""BACKGROUND-COLOR:#CCFF33"">$1</span>")
  Set objReg = Nothing
End Function

/Goose
Avatar billede CCodam Nybegynder
01. juni 2011 - 20:11 #1
Jeg kan ikke komme på nogen løsning, ved viderebygning af den givne funktion.

Jeg kan dog give dig et eksempel med javascript, der opfylder dit behov, hvis det ville være interessant?
Avatar billede goose Nybegynder
06. juni 2011 - 12:52 #2
Jeg vil mægtig gerne se dit javascript, måske jeg kan bruge det.
Avatar billede CCodam Nybegynder
07. juni 2011 - 10:30 #3
Du kan se scriptet køre her:
http://www.devd.dk/940178.html

Javascript delen, placeres i <head> tagget:
<script type="text/javascript">
function highlightWord(node,word) {

  if (node.hasChildNodes) { 
    var hi_cn;
   
    for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) {
      highlightWord(node.childNodes[hi_cn],word);
    }
  }

  if (node.nodeType == 3) { 
    tempNodeVal = node.nodeValue.toLowerCase();
    tempWordVal = word.toLowerCase();
   
    if (tempNodeVal.indexOf(tempWordVal)!= -1) {   
      pn = node.parentNode;
     
      if (pn.className!= "searchword") {
        nv = node.nodeValue;
        ni = tempNodeVal.indexOf(tempWordVal);
        before = document.createTextNode(nv.substr(0,ni));
        docWordVal = nv.substr(ni,word.length);
        after = document.createTextNode(nv.substr(ni+word.length));
        hiwordtext = document.createTextNode(docWordVal);
        hiword = document.createElement("span");
        hiword.className = "searchword";
        hiword.appendChild(hiwordtext);
        pn.insertBefore(before,node);
        pn.insertBefore(hiword,node);
        pn.insertBefore(after,node);
        pn.removeChild(node);
      }
    }
  }

}
</script>


Eksempel på style delen, placeres i <head> tagget:
<style type="text/css">

span.searchword {
font-weight: bold;
color: #FF9900;
}

</style>


Eksempel på html delen, placeres i <body> tagget:
<input type="text" id="word" /><input type=button onClick="highlightWord(document.getElementsByTagName('body')[0], document.getElementById('word').value)" value="Test" />

<p>
Her en lille tekst, der kan testes imod.<br />
Der skal også være et lille link:<a href="http://www.devd.dk"> linket </a>med tekst efter.<br />
</p>
Avatar billede goose Nybegynder
10. juni 2011 - 16:08 #4
Efter lidt roden frem og tilbage, så fik jeg lavet en window.onload som aktiverede dit javascript, og det ser ud til at fungere perfekt :-)

Smider du et svar så du kan få dine velfortjente point?

Tusinde tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester