6

我正在尝试制作一个搜索特定文本的代码,如果找到它,它将单击一个按钮。它需要不断地检查字符串,但是我正在努力寻找一种方法来实现这一点。我是编码的新手,所以任何帮助表示赞赏!:)

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();
            }
        }
    }
}
4

3 回答 3

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);
于 2013-05-19T14:48:37.160 回答
0

正则表达式:

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

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

指数:

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

search() 在字符串中搜索指定的值或正则表达式,并返回匹配的位置。

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
}
于 2013-05-19T14:20:29.530 回答
0

为什么需要不断地执行检查?您应该采用另一种方法...或者您的脚本将被 Chrome 阻止,例如,如果它使页面不负责任。您可以按照 Taylor Hakes 的建议进行超时...或者只是调用附加到 div 上的 onChange 事件的 findText 函数。

于 2013-05-19T17:48:00.303 回答