2015-02-27 8 views
6

Il problema è che quando mai combino due funzioni che:.Javascript - Ricerca di stringhe, cosa lo risolverà?

  1. ottiene tutti i id dei tag HTML del sito
  2. ricerche la matrice per "Parole Bad" (AKA "Hack"," Hacker", ecc ...)

Codice 1:

var eleng=document.documentElement.getElementsByTagName('*').length -1; 
var i=0; 
var id=[]; 
function allids() { 

    if (i < eleng) { 
     id.push(document.documentElement.getElementsByTagName('*')[i].id); 
     if (id[i] == '' || id[i] == ' ') { 
      i++; 
      allids(); 
     } else { 
      console.log(id[i]); 
      i++; 
      allids(); 
     } 
    } else { 
     console.log("\nDone!"); 
    } 

} 

Codice 2:

var str="HELLO"; 
var words=['hello','hack','hacker']; 
var i=0; 
function check() { 
    if (str.indexOf(words[i]) > -1 || str.indexOf(words[i].charAt(0).toUpperCase()) > -1 || str.indexOf(words[i].toUpperCase()) > -1) { 
    console.log('Word Found!'); 
} else { 
    if (i < words.length) { 
     i++; 
     check(); 
    } 
    } 
} 

Ovviamente il codice 2 sarebbe in una nuova funzione già provata ma senza successo :(e sarebbe stato modificato in base alle esigenze del codice 1, non potevo semplicemente preoccuparmi di riscrivere lo script per far fronte al codice. Adoro Save As, ma fammi sapere se è scomodo.

P.S Sto usando VANILLA Javascript, Quindi ciò significa niente cose di lusso come Jquery!

+0

quale sarà il valore effettivo di 'str'? cosa intendi combinando questi 2 script –

+0

@ qual è il tuo problema? L'array mantiene ancora le _bad words_? Hai problemi a combinare i due script? – Secret

+0

Come mai state dichiarando tutti questi come globali? Perché var i ha dichiarato globalmente e non ha come ambito almeno una funzione? L'intento è di essere in grado di eseguire la funzione solo una volta? –

risposta

0

uno script veloce per enumerare tutti i ID di pagina può essere trovato qui: How do I enumerate all of the html id's in a document with javascript?

e poi combinarle in una stringa, e banco di prova per le parolacce come segue:

var allElements = document.getElementsByTagName("*"); 
 
var allIds = []; 
 
for (var i = 0, n = allElements.length; i < n; ++i) { 
 
    var el = allElements[i]; 
 
    if (el.id) { 
 
     allIds.push(el.id); 
 
    } 
 
} 
 
var str = allIds.join("|").toUpperCase(); 
 
var words = ['hello', 'hack', 'hacker']; 
 
check(); 
 
function check() { 
 
    words.forEach(function (val, id) { 
 
     if (str.indexOf(val.toUpperCase()) > -1) { 
 
      console.log('Word Found!'); 
 
     } 
 
    }); 
 
}
<div id="test"></div> 
 
<div id="banana"></div> 
 
<div id="sdfsdf"> 
 
    <div id="test"></div> 
 
    <div id="test"> 
 
     <div id="test"></div> 
 
     <div id="teHACKst"></div> 
 
    </div> 
 
    <div id="testHA"></div> 
 
</div> 
 
<div id="CKtest"></div> 
 
<div id="test"></div> 
 
<div id="test"></div>

Se avete domande, non esitate a chiedere.

+0

Grazie per la rapida risposta, e grazie per l'aiuto :) – soundtap91

+0

@ soundtap91 siete i benvenuti :) – Banana

0

Usa questo codice per controllare indice della matrice in javscript ...

var array = ["rose", "violet", "blue"]; 

array.indexOf("blue"); // Gives 2 
+0

E la sensibilità al maiuscolo/minuscolo? – axelduch

+0

È possibile utilizzare 'String.prototype.toLowerCase.call (array) .split (',')' per convertire prima nello stesso formato. –