salve a tutti e buon pomeriggio,
avrei l'esigenza di creare una funzione che mi permetta di evidenziare x parole con lo stessa chiave di ricerca all' interno di elementi con lo stesso tag. Non so se mi spiego ma google in siti altrui riesce ad evidenziare parti di parole che utilizza l'utente per fare la ricerca usando questo codice:
codice:
/*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) { // text node
tempNodeVal = node.nodeValue.toLowerCase();
tempWordVal = word.toLowerCase();
if (tempNodeVal.indexOf(tempWordVal) != -1) {
pn = node.parentNode;
checkn = pn;
while (checkn.nodeType != 9 &&
checkn.nodeName.toLowerCase() != 'box') {
if (checkn.className.match(/\bnosearchhi\b/)) { return; }
checkn = checkn.parentNode;
}
if (pn.className != "searchword") {
// word has not already been highlighted!
nv = node.nodeValue;
ni = tempNodeVal.indexOf(tempWordVal);
// Create a load of replacement nodes
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);
}
}
}
}
function googleSearchHighlight(q) {
highlightWord(document.getElementsByTagName("<cerca>")[0],q);
}
*/
dato che sono
inesperto non so se serve davvero tutta sta roba per fare una semplice evidenziazione equivalente ad crtl+f in molti browser!
Io l'avevo pensta cosi: l'utente immette la chiave in una campo di tipo text e all'evento onkeydown la funzione si aggiorna
assolutamente non so se la cosa è del tutto fattibile ma il codice qui sopra promette davvero bene
il fatto è che voglio chiedere se davvero servono tutte quelle righe per fare cio che voglio !