【问题标题】:How do I loop a check for string in a document in Javascript?如何在Javascript中循环检查文档中的字符串?
【发布时间】:2013-05-14 04:30:10
【问题描述】:

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

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

【问题讨论】:

  • 你得到的错误究竟是什么?
  • 您是否要在窗口中搜索数组中的单词?
  • 没有特别的错误,只是当文本出现时,按钮没有被点击。我知道按钮单击脚本很好,我只是想我在函数的某个地方搞砸了。
  • 变量text 将是一个布尔值,但你没有在任何地方使用它,BtnText 是什么?
  • 是的,我正在通过窗口查看数组中的任何单词,这只是“你好!”目前。

标签: javascript string loops button


【解决方案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);

【讨论】:

    【解决方案2】:

    正则表达式:

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

    索引:

    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
    }
    

    【讨论】:

    • 而window.find 在全局范围内用一行没有任何正则表达式来做到这一点?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 2023-03-14
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多