2013-05-19 41 views
6

我試圖做一個代碼來搜索特定的文本,如果發現它會點擊一個按鈕。它需要連續檢查字符串,但是我正在努力尋找一種方法來實現。我是一個完整的編程新手,所以任何幫助表示讚賞! :)如何在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

你得到的錯誤究竟是什麼? – Saturnix

+0

你是否試圖在窗口中搜索數組中的單詞? – adeneo

+0

沒有特別的錯誤,只是當文本出現時,按鈕沒有被點擊。我知道按鈕點擊腳本是好的,我只是想我已經搞亂了功能的某個地方。 – user2399007

回答

0

正則表達式:

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

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

的indexOf:

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

搜索() 搜索指定值,或正則表達式的字符串,並返回的位置比賽。

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

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

與window.find()

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

而window.find在全局範圍內使用一行代碼執行此操作,而不使用任何正則表達式? – adeneo

+0

我編輯帖子 – argentum47

1

只需要編輯你的代碼一點點。

我假設你有這樣的HTML?

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

你會如果你想連續檢查更改代碼這個

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

。我建議使用setInterval。

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

爲什麼您需要連續執行檢查? 您應該採取另一種方法......或者您的腳本將被Chrome阻止,例如,如果它使頁面無法負責。你可以去暫停,就像Taylor Hakes建議的那樣......或者只是把你的findText函數附加到div上的onChange事件上。

相關問題