Javascript 检查页面中是否存在来自数组的项。如果是,请提醒它。如果没有,请刷新页面
所以,我有一个用户脚本,可以在页面中查找字符串。如果找不到,则会在4秒钟后刷新页面:Javascript 检查页面中是否存在来自数组的项。如果是,请提醒它。如果没有,请刷新页面,javascript,jquery,userscripts,Javascript,Jquery,Userscripts,所以,我有一个用户脚本,可以在页面中查找字符串。如果找不到,则会在4秒钟后刷新页面: var item = 'apple'; if(document.body.innerHTML.toString().indexOf(item) > -1){ setTimeout(function() { alert(item + " was found"); }, 150); }else{ setTimeout(function()
var item = 'apple';
if(document.body.innerHTML.toString().indexOf(item) > -1){
setTimeout(function() {
alert(item + " was found");
}, 150);
}else{
setTimeout(function()
{
location.reload(true);
}, 4000);
}
这段代码工作得很好。但是,我想用数组搜索多个项目:
var item = [
'apple',
'peach'
];
for (var i = 0; i < item.length; i++){
if(document.body.innerHTML.toString().indexOf(item[i]) > -1){
player.play();
setTimeout(function() {
var curitem = item[i];
alert(item[i] + " was found");
}, 200);
}
}
//else{
// setTimeout(function()
// {
// location.reload(true);
// }, 4000);
//}
var项=[
“苹果”,
“桃子”
];
对于(变量i=0;i-1){
player.play();
setTimeout(函数(){
var curitem=项目[i];
警报(发现[i]+“项”);
}, 200);
}
}
//否则{
//setTimeout(函数()
// {
//位置。重新加载(true);
// }, 4000);
//}
但我被卡住了,我不知道:
这意味着脚本正在工作,它正在数组中查找项。但在警报中显示为“未定义”
这将在数组中找到第一个匹配项。这里使用Div id
content
,因为脚本是示例代码段正文的一部分
var项=[
“苹果”,
“桃子”
];
//确保项目不包含特殊的正则表达式字符
var itemRe=new RegExp(item.join(“|”);
var result=document.getElementById(“content”).innerHTML.toString().match(itemRe);
如果(结果){
//player.play();
setTimeout(函数(){
警报(发现result.toString()+);
}, 200);
}否则{
setTimeout(函数(){
位置。重新加载(true);
}, 4000);
}
gfg
这将在数组中找到第一个匹配项。这里使用Div idcontent
,因为脚本是示例代码段正文的一部分
var项=[
“苹果”,
“桃子”
];
//确保项目不包含特殊的正则表达式字符
var itemRe=new RegExp(item.join(“|”);
var result=document.getElementById(“content”).innerHTML.toString().match(itemRe);
如果(结果){
//player.play();
setTimeout(函数(){
警报(发现result.toString()+);
}, 200);
}否则{
setTimeout(函数(){
位置。重新加载(true);
}, 4000);
}
有几种方法可以做到这一点。我更喜欢正则表达式,因为它提供了更大的功能,而且对于大量术语来说,通常比循环更快 代码如下:
var项目=[
“苹果”,
“桃子”
];
var itmRegEx=newregexp(`(${items.join(“|”)})`);
var itmMtch=document.body.innerHTML.match(itmRegEx);
if(itmMtch&&itmMtch.length){
//player.play();
//setTimeout(警报,200,发现itmMtch[1]+);
setTimeout(console.log,200,找到itmMtch[1]+);
}
否则{
console.log(“重新加载…”);
//setTimeout(()=>{location.reload(true);},4000);
}
有几种方法可以做到这一点。我更喜欢正则表达式,因为它提供了更大的功能,而且对于大量术语来说,通常比循环更快
代码如下:
var项目=[
“苹果”,
“桃子”
];
var itmRegEx=newregexp(`(${items.join(“|”)})`);
var itmMtch=document.body.innerHTML.match(itmRegEx);
if(itmMtch&&itmMtch.length){
//player.play();
//setTimeout(警报,200,发现itmMtch[1]+);
setTimeout(console.log,200,找到itmMtch[1]+);
}
否则{
console.log(“重新加载…”);
//setTimeout(()=>{location.reload(true);},4000);
}
将“var curitem=item[i]”移动到setTimeout调用上方,并使用“alert(curitem+“was found”);而不是“i”超出范围scope@Daniel,是不允许的。你的新问题很简单,但它们也是新的。在原来的问题解决后,为这些人问一个新问题——下面的答案似乎是这样。@BrockAdams我以前也能这样做,而新解决方案带来的问题是新的:/所以我不知道,对不起。@Daniel,新解决方案只有一个问题,昨天就解决了。其他的东西是新特性,这些特性既不存在于原始的、已损坏的代码中,也不存在于原始问题中。您的原始问题已得到回答。请将“var curitem=item[i]”移到setTimeout调用上方,并使用“alert(curitem+”was found”);而不是“i”超出范围scope@Daniel,是不允许的。你的新问题很简单,但它们也是新的。在原来的问题解决后,为这些人问一个新问题——下面的答案似乎是这样。@BrockAdams我以前也能这样做,而新解决方案带来的问题是新的:/所以我不知道,对不起。@Daniel,新解决方案只有一个问题,昨天就解决了。其他的东西是新特性,这些特性既不存在于原始的、已损坏的代码中,也不存在于原始问题中。你原来的问题得到了回答。谢谢你的回复,我用当前的问题更新了我的帖子。谢谢你的回复,我用当前的问题更新了我的帖子。