Javascript caută această pagină

Javascript caută această pagină

Căutați după pagină. Poate fi util pentru paginile care oferă o cantitate mare de date, inclusiv tabele și liste. Observ că o astfel de nevoie apare atunci când conținutul paginii este static și nu este generat din baza de date.







Pentru a căuta pe pagină, informațiile necesare vor fi mai convenabile dacă în acest scop se va implementa interfața corespunzătoare:

În câmp, trebuie să introduceți un cuvânt pentru a căuta și apăsați pe butonul "Căutare", totul este clar clar. Să trecem la punerea în aplicare a mecanismului de căutare în pagină și să vedem ce nuanțe pot fi atunci când o implementăm.

Cum pot căuta un cuvânt pe o pagină?

dacă (obj) textToFind = TrimStr (obj.value); // Trunchiați spațiile
> alt alert ("Fraza introdusă nu a fost găsită");
return;
>
dacă (textToFind == "") alertă ("Nu ați introdus nimic");
return;
>

dacă (document.body.innerHTML.indexOf (textToFind) == "- 1")
alertă ("Nimic găsit, verificați corectitudinea intrării!");


bunuri greutate costul
19 inch monitor 1 kg 1900 freca.
Monitor de 18 inch 2 kg 1800 freca.
Monitor 20 inch 2 kg 1900 freca.

Încearcă, testează cu interogări de căutare "19", "2 kg" și altele. De asemenea, vă sfătuiesc să verificați derularea automată, pentru a adăuga acest text până când apare partea dreaptă a barei de derulare.

Iată un exemplu de utilizare a unui script:

Javascript caută această pagină

Javascript caută această pagină

Pentru Alexey.
Oh ....
În general, acest lucru ar trebui făcut de subiectul principal. Nu este suficient să spunem, trebuie să deschideți "Tema". Dacă Mark deschide acest subiect - "Expresie regulată", atunci va fi mai ușor. Ei bine, în acest moment numai în esență ...
Să încercăm să dezasambleze acest rigmarol ...
Șablonul este luat de la sursa lui Mark (chiar deasupra).

Următoarea rafinare este necesară:

Introduceți începutul intrării liniei (pentru mine)
- orice caractere. zero
- latină. zero
- cuvântul de intrare nu este mai mic de 2-3 caractere (un caracter: un număr de litera-literă-nu ne pierdem)

Avem o "sursă", scrieți una nouă. nu există timp, lenea, "capul-fum".
Mark folosește metoda de înlocuire.

Ce zici de el, înlocuiți - știți?

Se știe că înlocuirea poate înlocui apariția unei expresii regulate nu numai cu un șir, ci și cu rezultatul unei funcții. Sintaxa completă, ca exemplu, este următoarea:







var nouString = str.replace (regexp / substr, newSubStr / funcție)

Ei bine și în continuare ca - regexp Object RegExp. Aparițiile sale vor fi înlocuite cu o valoare care va returna numărul de parametru 2

Substr - șir, care va fi înlocuit cu newSubStr.
newSubStr este un șir care înlocuiește substringul din argumentul numărul 1.
Funcția este o funcție care poate fi apelată pentru a genera un substring nou (pentru al substitui pentru subdriga obținută din argumentul 1).

Din păcate, metoda de înlocuire nu modifică linia pe care se numește, ci returnează pur și simplu un șir nou, modificat.
Pentru a implementa o înlocuire globală, trebuie să includeți semnul "g" în expresia regulată.
Dacă primul argument este un șir, acesta nu este convertit la o expresie regulată, așa că, de exemplu,

var ab = "a b" .replace ("\\ s", "..") // = "a b"

Chemarea pentru înlocuire a lăsat șirul neschimbat, pentru că nu am căutat expresia regulată \ s. și linia "\ s".
Acum este necesar să înțelegem că:
- Pentru caracterele obișnuite - le face deosebite. De exemplu, expresia / s / caută doar caracterul "s". Și dacă ați pus înainte de s. apoi / \ s / deja indică un caracter al spațiului alb. Și invers, dacă simbolul este special, de exemplu *. atunci \ va face doar un simplu simbol "stea". De exemplu, / a * / caută 0 sau mai multe caractere consecutive "a". Pentru a găsi un asterisc 'a *' - pune \ înainte de spets. de simbolul: / a \ * /.
Și întrucât este necesar să înțelegem acest lucru:
- când se creează o expresie regulată utilizând noul constructor RegExp (...). Amintiți-vă că ar trebui să scăpați spate (\), de exemplu:

Deci, utilizați un cod care nu s-ar fi modificat buggy la introducerea de caractere sau numere de 1-2, finalizate care ar trecut în mod fiabil la prima apariție a textului.

Dar acum s-a dovedit că căutarea și înlocuirea are loc pe tot textul paginii și pe atributele etichetelor HTML.

...... Dacă aveți nevoie de sfaturi cu privire la astfel de probleme - contactați profesioniștii, de exemplu, în "Austria-Home" .. Consultați ......

când se caută cuvântul austria este deteriorat.

Cum se configurează căutarea și se înlocuiește numai în text vizibil,
cum se face acest buton f3?

Și totuși, cum să trecem la următoarea apariție?

//////////////////////////////////////// căutare
funcția searchGlobalText (ob, textToFind) pentru (var i = 0; i // aici puteți să vă referiți la parentNode:
/ * var rng = document.createRange ();
rng.selectNode (ob.childNodes [i]);
rng.deleteContents (); * /

> altceva searchGlobalText (ob.childNodes [i], textToFind);
>;
> else if (ob.childNodes [i] .nodeType == 3) if (eval ( "/" + textToFind + "/ Gi"). testare (ob.childNodes [i] .nodeValue)) var root = ob.childNodes [ i];
var content = root.nodeValue;

dacă (document.createRange) var rng = document.createRange ();
rng.setStart (root, content.toLowerCase (). indexOf (textToFind.toLowerCase ()));
rng.setEnd (rădăcină, content.toLowerCase () indexOf (textToFind.toLowerCase ()) + textToFind.length.);
var highlightDiv = document.createElement ('a');
highlightDiv.setAttribute ("nume", textToFind);
highlightDiv.setAttribute ('srh', '');
highlightDiv.style.backgroundColor = 'roșu';

rng.surroundContents (highlightDiv);
pauză;
> altceva

var rng = document.body.createTextRange ();

rng.moveToElementText (rădăcină);
// Găsiți textul și restrângeți intervalul la acesta
dacă (rng.findText (textToFind))

rng.pasteHTML (''+ textToFind +'„);
pauză;
>


>
>
funcția enterSearch () dacă (event.keyCode == 13) FindOnPage ("text-to-find");
>
>
funcția FindOnPage (inputId)

var textToFind = document.getElementById (inputId); valoare;

Bună ziua, mulțumesc pentru cod.
Te rog ajută-mă, ceea ce ar putea fi problema în toate browserele de căutare funcționează bine, dar în IE 8 versiune nu este destul de corect: fraza de căutare este, concentrată, dar afișează câmpurile text " Ajută-mă să-mi dau seama ce fel de mistică?)) Vă mulțumesc anticipat.

Toată ziua! Spuneți-mi de ce am doar un singur cuvânt pentru acest cod, adică dacă introduceți o expresie, chiar din 2 cuvinte, căutarea nu are loc. Și totuși, cum să convertiți acest cod, astfel încât toate propozițiile cu textul găsit să apară într-o fereastră separată? Ajută-te, dar textul este foarte mare, chiar derularea nu ajută.







Articole similare

Trimiteți-le prietenilor: