问题是,当我组合两个函数时:
代码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这样的花哨的东西!
答案 0 :(得分:0)
使用此代码检查javascript中的数组索引...
答案 1 :(得分:0)
可以在页面上找到枚举所有ID的快速脚本: How do I enumerate all of the html id's in a document with javascript?
然后我们将它们组合成一个字符串,并按如下方式测试坏字:
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;
如果您有任何疑问,请随时提出。