2013-05-19 12 views
6

Sto provando a creare un codice che cercherà un testo specifico e, se viene trovato, farà clic su un pulsante. Deve controllare continuamente la stringa, tuttavia sto cercando di trovare un modo per farlo. Sono un newb completo per la codifica, quindi qualsiasi aiuto è apprezzato! :)Come si esegue il ciclo di un controllo per la stringa in un documento in Javascript?

var findMe = [ 
    //Test 
    'Hello!', 
]; 

function findText() { 
    var text = document.querySelector('div[id=BtnText]'); 

    for (var i = 0; i < findMe.length; i++) { 
     if (BtnText.match(findMe[i])) { 
      var btnDo = document.querySelector('input[type="submit"][value="Click!"]'); 
      if (btnDo) { 
       btnDo.click(); 
      } 
     } 
    } 
} 
+0

qual è esattamente l'errore che ottieni? – Saturnix

+0

Stai provando a cercare nella finestra le parole nell'array? – adeneo

+0

nessun errore particolare, è solo quando il testo non viene premuto il pulsante non viene cliccato. So che lo script per fare clic sul pulsante va bene, sto solo pensando di aver incasinato qualche parte della funzione. – user2399007

risposta

0

Espressione regolare:

(new RegExp('word')).test(str) 

(new RegExp(/word/)).test(str) 

indexOf:

str.indexOf('word') !== -1 

search() cerca una stringa per un valore specificato, o l'espressione regolare, e restituisce la posizione del incontro.

var n=str.search("word"); 

o

var n-str.search(/word/); 
    if(n>0) 
    {} 

con window.find()

if (window.find("word", true)){} 
//code 
while(window.find("word",true){ 
//code 
} 
+0

E window.find fa questo nello scope globale con una sola riga senza alcuna regex? – adeneo

+0

ho modificato il post – argentum47

1

Basta modificare il codice di un po '.

Suppongo che tu abbia HTML come questo?

<div id="BtnText">Hello!</div><input type="submit" value="Click!"> 

È volontà di cambiare il codice per questo

var findMe = [ 
    //Test 
    'Hello!', 
]; 

function findText() { 
    var div = document.querySelector('div[id=BtnText]'); 

    for (var i = 0; i < findMe.length; i++) { 
     if (div.innerText.indexOf(findMe[i]) !== -1) {    
      var btnDo = document.querySelector('input[type="submit"][value="Click!"]'); 
      if (btnDo) { 
       if (typeof btnDo.onclick == "function") { 
        btnDo.onclick.apply(elem); 
       } 
      } 
      return true; 
     } 
    } 
    return false; 
} 

Se si desidera controllare in modo continuo. Raccomando l'uso di setInterval.

var interval = setInterval(function() { 
    var textFound = findText(); 
    if(textFound) { 
     clearInterval(interval); 
    } 
},50); 
0

Perché è necessario eseguire il controllo in modo continuo? Dovresti ottenere un altro approccio ... O il tuo script verrà bloccato da Chrome, ad esempio, se rende la pagina non responsabile. Puoi andare per un timeout, come suggerito da Taylor Hakes ... O semplicemente chiama la funzione findText collegata all'evento onChange sul div.

Problemi correlati