【发布时间】:2020-06-09 20:48:01
【问题描述】:
var list = [{
name: "koala",
owner: "mark"
},
{
name: "opossum",
owner: "lala"
},
{
name: "dog",
owner: "lucia"
}
];
var str = document.body.innerHTML;
var toChange = /fox|penguin|cat/ig;
for (let listItem of list) {
str = str.replace(toChange, listItem.name);
str.id = 'span';
document.body.innerHTML = str;
console.log(listItem.name);
}
span {
text-decoration: underline;
color: red;
}
The fox jumps over the bush, the penguin walks, the cat drinks.
我基本上想做的是将HTML文本中的动物替换为“列表”中的动物。此外,我希望这些最后更改的动物名称也能改变颜色。我设法用动物考拉替换,但我不太确定为什么它只替换为考拉,好像我 console.log(listItem.name) 我得到了所有三只动物。 for循环有问题吗?
【问题讨论】:
-
一旦你替换了动物名称一次,它们就不再存在了,可以再次替换......
-
您的正则表达式在全局范围内匹配 fox、penguin 和 cat 的所有三个(因此,这三个中的任何一个的每个实例)。所以第一次,他们都被考拉取代了。在那之后,它就不再匹配了,因为现在一直都是考拉。
-
请注意,字符串没有
id属性,因此设置str.id = 'span'没有任何作用,因为您不是针对元素,而是针对字符串。
标签: javascript