Javascript - 字符串搜索,将解决什么?

时间:2015-02-27 11:05:47

标签: javascript

问题是,当我组合两个函数时:

  1. 获取网站HTML标签的所有ID
  2. 在数组中搜索“Bad Words”(AKA。“Hack”,“Hacker”等...)
  3. 代码1:

    var eleng=document.documentElement.getElementsByTagName('*').length -1;
    var i=0;
    var id=[];
    function allids() {
    
        if (i < eleng) {
            id.push(document.documentElement.getElementsByTagName('*')[i].id);
            if (id[i] == '' || id[i] == ' ') {
                i++;
                allids();
            } else {
                console.log(id[i]);
                i++;
                allids();
            }
        } else {
            console.log("\nDone!");
        }
    
    }
    

    代码2:

    var str="HELLO";
    var words=['hello','hack','hacker'];
    var i=0;
    function check() {
        if (str.indexOf(words[i]) > -1 || str.indexOf(words[i].charAt(0).toUpperCase()) > -1 || str.indexOf(words[i].toUpperCase()) > -1) {
        console.log('Word Found!');
    } else {
        if (i < words.length) {
            i++;
            check();
        }
       }
     }
    

    当然Code 2将在一个已经尝试过的新功能中但没有成功:(并且它将根据代码1的需要进行编辑,我只是​​无法重写脚本以满足代码的需要。我喜欢Save As,但如果不方便请告诉我。

    P.S我正在使用VANILLA Javascript,这意味着没有像Jquery这样的花哨的东西!

2 个答案:

答案 0 :(得分:0)

使用此代码检查javascript中的数组索引...

答案 1 :(得分:0)

可以在页面上找到枚举所有ID的快速脚本: How do I enumerate all of the html id's in a document with javascript?

然后我们将它们组合成一个字符串,并按如下方式测试坏字:

&#13;
&#13;
var allElements = document.getElementsByTagName("*");
var allIds = [];
for (var i = 0, n = allElements.length; i < n; ++i) {
    var el = allElements[i];
    if (el.id) {
        allIds.push(el.id);
    }
}
var str = allIds.join("|").toUpperCase();
var words = ['hello', 'hack', 'hacker'];
check();
function check() {
    words.forEach(function (val, id) {
        if (str.indexOf(val.toUpperCase()) > -1) {
            console.log('Word Found!');
        }
    });
}
&#13;
<div id="test"></div>
<div id="banana"></div>
<div id="sdfsdf">
    <div id="test"></div>
    <div id="test">
        <div id="test"></div>
        <div id="teHACKst"></div>
    </div>
    <div id="testHA"></div>
</div>
<div id="CKtest"></div>
<div id="test"></div>
<div id="test"></div>
&#13;
&#13;
&#13;

如果您有任何疑问,请随时提出。