2013-05-19 8 views
6

Próbuję utworzyć kod, który wyszuka określony tekst, a jeśli zostanie znaleziony, kliknie przycisk. Musi ciągle sprawdzać ciąg, ale staram się znaleźć sposób, aby to się stało. Jestem kompletnym nowicjuszem w zakresie kodowania, więc każda pomoc jest doceniana! :)Jak zapętlić czek na ciąg znaków w dokumencie w 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

co to jest za błąd? – Saturnix

+0

Czy próbujesz przeszukać okno dla słów w tablicy? – adeneo

+0

brak konkretnego błędu, to po prostu, gdy tekst nie pojawia się przycisk nie jest kliknięty. Wiem, że skrypt klikania przycisku jest w porządku, po prostu myślę, że zawiedliście gdzieś w tej funkcji. – user2399007

Odpowiedz

0

Wyrażenie regularne:

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

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

indexOf:

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

search() przeszukuje ciąg dla określonej wartości lub wyrażenia regularnego, i zwraca pozycję z poniższych mecz.

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

lub

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

z window.find()

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

A window.find robi to w zasięgu globalnym za pomocą pojedynczej linii bez żadnych wyrażeń regularnych? – adeneo

+0

Edytowałem post – argentum47

1

Wystarczy edytowania kodu trochę.

Zakładam, że masz taki HTML?

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

Będziesz zmienić swój kod do tego

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; 
} 

Jeśli chcesz sprawdzić w sposób ciągły. Polecam używanie setInterval.

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

Dlaczego należy wykonywać kontrolę w sposób ciągły? Powinieneś uzyskać inne podejście ... Albo twój skrypt zostanie zablokowany przez Chrome, na przykład, jeśli spowoduje, że strona nie będzie odpowiedzialna. Możesz przejść do limitu czasu, jak zasugerował Taylor Hakes ... Lub po prostu wywołaj funkcję findText dołączoną do zdarzenia onChange na div.

Powiązane problemy