JavaScript - 字符串搜索,应该如何修复?

6

问题在于,每当我结合两个函数时:

  1. 获取网站HTML标签的所有ID
  2. 在数组中搜索“坏词”(例如“黑客”,“骇客”等)

代码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已经尝试过放在一个新函数中,但是没有成功:( 而且它将被编辑以满足Code 1的需求,我只是不想重新编写脚本来适应该代码。我喜欢“另存为”,但如果不方便请告诉我。

附言:我正在使用VANILLA Javascript,这意味着没有像Jquery这样的花哨东西!


str的实际值是什么?将这两个脚本组合在一起是什么意思? - Arun P Johny
你有什么问题吗?数组里还保留着“坏词”吗?你在合并这两个脚本时遇到了麻烦吗? - Secret
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Simon H
OP,你可以通过以下方式缩小选择器的范围:var allIds = document.querySelectorAll('[id]')。这将获取页面上所有具有 id 属性的元素。 - A1rPun
2个回答

0
请使用以下代码来检查JavaScript数组的索引...
var array = ["rose", "violet", "blue"];

array.indexOf("blue"); // Gives 2

大小写敏感性怎么处理? - axelduch
您可以使用 String.prototype.toLowerCase.call(array).split(',') 首先将其转换为相同的格式。 - Alex Char

0

在页面上枚举所有ID的快速脚本可以在此处找到: 如何使用JavaScript枚举文档中的所有HTML ID?

然后我们将它们组合成一个字符串,并按以下方式测试不良单词:

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!');
        }
    });
}
<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>

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


谢谢你的快速回复,也感谢你的帮助 :) - soundtap91

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接