2013-05-19 49 views
6

Tôi đang cố gắng tạo mã sẽ tìm kiếm một văn bản cụ thể và nếu được tìm thấy, nó sẽ nhấp vào một nút. Nó cần phải kiểm tra chuỗi liên tục, tuy nhiên tôi đang đấu tranh để tìm cách để điều đó xảy ra. Tôi là một newb hoàn chỉnh để mã hóa, vì vậy bất kỳ trợ giúp được đánh giá cao! :)Làm cách nào để kiểm tra chuỗi ký tự trong tài liệu bằng 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

lỗi chính xác của bạn là gì? – Saturnix

+0

Bạn đang tìm kiếm cửa sổ cho các từ trong mảng? – adeneo

+0

không có lỗi cụ thể, chỉ khi văn bản không hiển thị nút không được nhấp. Tôi biết kịch bản nhấn nút là tốt, tôi chỉ nghĩ rằng tôi đã sai lầm một nơi nào đó trong chức năng. – user2399007

Trả lời

0

biểu hiện thường xuyên:

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

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

indexOf:

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

tìm kiếm() tìm kiếm một chuỗi cho một giá trị nhất định, hoặc biểu thức chính quy, và trả về vị trí của trận đấu.

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

hoặc

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

với window.find()

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

Và window.find thực hiện điều này trong phạm vi toàn cầu với một dòng đơn không có bất kỳ regex nào? – adeneo

+0

tôi đã chỉnh sửa bài đăng – argentum47

1

Chỉ cần chỉnh sửa mã của bạn một chút.

Tôi giả sử bạn có HTML như thế này?

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

Bạn sẽ phải thay đổi mã của bạn để này

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

Nếu bạn muốn kiểm tra liên tục. Tôi khuyên bạn nên sử dụng setInterval.

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

Tại sao bạn cần thực hiện kiểm tra liên tục? Bạn sẽ nhận được một cách tiếp cận khác ... Hoặc tập lệnh của bạn sẽ bị Chrome chặn, ví dụ: nếu nó làm cho trang không chịu trách nhiệm. Bạn có thể đi cho một thời gian chờ, như Taylor Hakes đề nghị ... Hoặc chỉ cần gọi hàm findText của bạn gắn liền với sự kiện onChange trên div.

Các vấn đề liên quan