Visualizzazione dei risultati da 1 a 2 su 2

Discussione: evidenziare parole

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379

    evidenziare parole

    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 !

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    forse non mi sono spiegato bene ma spero che qualcuno mi possa dare una mano!

    ho notato che questo script funziona ma solamente se il tag inserito è "body"

    codice:
    function cerca(q) {
    	highlightWord(document.getElementsByTagName("body")[0],q);
    	//alert(q);
    il fatto è che il mio sito è strutturato in un altro modo e vorrei che mi facesse la ricerca solo all'interno di tutti i tag che voglio io. estendere la ricerca al body sarebbe ecessiva. mettiamo che il php mi printa a schermo 3 messaggi rispettivamente (A) (B) (C) tutti e tre sono delimitati da un un dag che ha un id ovvero "cerca".

    codice:
    function cerca(q) {
    	highlightWord(document.getElementsById("cerca"),q);
    	//alert(q);
    ho provato a fare cosi pero a quanto pare non funziona qualcuno sa dirmi xke?

    io sono nuovo nel mondo dello js e non riesco ad interpretare tutto il codice soprastante, dati anche quei nomi alle variabili...

    ogni consiglio è benaccetto... magari per fare cio che voglio io ce un modo piu' corto!

    grazie in anticipo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.