2013-05-19 15 views
6

特定のテキストを検索するコードを作成しようとしていますが、見つかった場合はボタンをクリックします。それは文字列を連続的にチェックする必要がありますが、私はそれが起こる方法を見つけるのに苦労しています。私はコーディングに完全なnewbですので、どんな助けもありがとう! :)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 

検索()一致。ちょうどあなたのコードを少し編集window.findと

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

または

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

()

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

そしてwindow.findはグローバルスコープ内で正規表現のない1行でこれを行いますか? – 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が提案したように、タイムアウトに行くことができます...または、divのonChangeイベントに関連付けられたfindText関数を呼び出すだけです。

関連する問題