Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 高效地查找和设置多个字符串的样式_Javascript_Html_Arrays - Fatal编程技术网

Javascript 高效地查找和设置多个字符串的样式

Javascript 高效地查找和设置多个字符串的样式,javascript,html,arrays,Javascript,Html,Arrays,我可以使用indexOf()搜索和更改特定字符串的所有匹配项的样式,如下所示: var links = [...document.body.getElementsByTagName("a")]; for (var i = 0; i < links.length; i++) { if (links[i]["href"].indexOf("dog") == -1) { continue; } links[i].style["color"] = "green"; } va

我可以使用indexOf()搜索和更改特定字符串的所有匹配项的样式,如下所示:

var links = [...document.body.getElementsByTagName("a")];

for (var i = 0; i < links.length; i++) {
  if (links[i]["href"].indexOf("dog") == -1) {
    continue;
  }
  links[i].style["color"] = "green";
}
var links=[…document.body.getElementsByTagName(“a”)];
对于(变量i=0;i
但我如何更改多个给定字符串的所有匹配项,即“dog”和“cat”

我没想到这会奏效,但还是尝试了:

var links = [...document.body.getElementsByTagName("a")];
var pets = ["dog", "cat"];

for (var i = 0; i < links.length; i++) {
  if (links[i]["href"].indexOf(pets) == -1) {
    continue;
  }
  links[i].style["color"] = "green";
}
var links=[…document.body.getElementsByTagName(“a”)];
变量pets=[“狗”、“猫”];
对于(变量i=0;i

它不起作用。

您可以这样做:

这会将所有链接更改为绿色,即href不包含各种宠物名称

var links=Array.prototype.slice.call(document.body.getElementsByTagName(“a”);
对于(变量i=0;i

您可以使用第二个
for
循环检查
宠物的每个索引:

var links=[…document.body.getElementsByTagName(“a”)];
变量pets=[“狗”、“猫”];
对于(变量i=0;i

使用
一些

if (!pets.some(pet => links[i].href.includes(pet))) {...}
或者使用正则表达式:

if (!(new RegExp(pets.join("|")).test(links[i].href))) {...}

但是如果宠物非常长怎么办?你想多次复制/粘贴这种条件吗?@jackbashford,没错。“我想在这上面加上大约20只宠物。”金女士,我编辑了我的答案。但你到底想做什么?如果href包含任何宠物名,则将链接变为绿色?@BryanElliot文档包含链接,其中一些包含特定字符串(例如“狗”、“猫”等),我希望所有包含这些字符串的链接都成为目标。我没有使用正则表达式的经验,但我尝试了你的编辑,它会更改除列出的链接以外的所有链接。lol@King_Lady,哦,好的,那就改变条件吧。。比如:
if(!re.test(href))
试试看。:)添加额外的for循环正是我希望避免的。我还有大约20个“宠物”要添加到列表中。这看起来像我要找的,但我不知道如何使用我的代码段。你应该可以用我答案中的条件替换
if
条件。它会抛出错误吗?没有错误-它只是中断。当我删除continue时,所有链接都是绿色的。将
链接[I].style.color=“green”
放在
if
语句中-更好的实践和更容易的调试。这样行吗?(例如,删除
继续
)修复它!我所要做的就是添加一个!宠物面前