当前位置: 首页 > 知识库问答 >
问题:

如何在Javascript中替换字符串中的单词并添加id

勾长卿
2023-03-14
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;
}
html lang-html prettyprint-override">The fox jumps over the bush, the penguin walks, the cat drinks.

我基本上想做的是用“列表”中的动物替换超文本标记语言中的动物。此外,我希望这些最后更改的动物名称也能改变颜色。我设法用考拉替换了动物,但我不知道为什么它只替换了考拉,好像我console.log(listItem.name)我得到了所有三种动物。for循环有问题吗?

共有3个答案

高和通
2023-03-14

你只是替换整个HTML内容没有附加,所以你需要创建一个新的跨度元素,并在正文中添加该元素,你也可以使用innetText代替内部Html,因为内Html也会给内部元素以及文本。

var list = [{
    name: "koala",
    owner: "mark"
  },

  {
    name: "opossum",
    owner: "lala"
  },

  {
    name: "dog",
    owner: "lucia"
  }
];
var htmlText = document.body.innerText;
var toChange = /fox|penguin|cat/ig;
var spanComponent='';
for (let listItem of list) {
  var str =  htmlText.replace(toChange, listItem.name);
  console.log(str)
  var span = document.createElement('span')
  span.innerText = str;
  document.body.appendChild(span);
}
The fox jumps over the bush, the penguin walks, the cat drinks.
咸承教
2023-03-14

将代码的相应部分替换为:

var toChange = [/fox/ig, /penguin/ig, /cat/ig];

for (let listItem of list) {
  str = str.replace(toChange[list.indexOf(listItem)], listItem.name);

结果:

The koala jumps over the bush, the opossum walks, the dog drinks.
严宏朗
2023-03-14

我想这是你想做的。正如异端猴子所指出的,像那样只使用一个正则表达式是行不通的。不能在字符串上设置id。另外,id必须是唯一的,所以不能给不同的元素设置相同的id。

var list = [{
    name: "koala",
    owner: "mark"
  },

  {
    name: "opossum",
    owner: "lala"
  },

  {
    name: "dog",
    owner: "lucia"
  }
];

var str = document.body.innerHTML;
var toChange = [/fox/ig, /penguin/ig, /cat/ig];


for (let i = 0; i < list.length; i++) {
  str = str.replace(toChange[i], `<span>${list[i].name}</span>`);
  document.body.innerHTML = str;
  console.log(list[i].name);
}
span {
  text-decoration: underline;
  color: red;
}
The fox jumps over the bush, the penguin walks, the cat drinks.
 类似资料:
  • 问题内容: 我正在使用一个喜欢: 我使用的是哪里。这行代码对我不起作用。我想知道自己在做什么错? 问题答案: 尽管看起来可能存在一些语法问题,但是代码看起来或多或少还可以。这是一个工作示例:

  • 问题内容: 我想替换字符串语句中的单词,例如: 用实际名词/动词替换“ $ $”(含)中的字符的正则表达式是什么? 问题答案: 您不需要为此使用正则表达式。我会做 仅在需要时使用正则表达式。通常比较慢。

  • 问题内容: 我正在从用户那里获得一个物理位置地址,并试图安排它来创建一个URL,该URL以后将用于从Google Geocode API获取JSON响应。 最终的URL字符串结果应与此类似,但不能有空格: http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View

  • 我需要在java中找到一种类似的巧妙方法来替换多个字符串,就像在php中使用str_replace一样。 我想要一个字符串,然后返回一个字符串,其中数字1到10被替换为这些数字的单词。

  • 示例:[可爱]微笑这是测试[笑哭] 目的:将这个字符串中所有中括号表示的文字替换为emoji

  • 我想替换字符串中的一些单词。我有可行的解决方案,但我认为这不是最好的。你能帮我做些更有效的事情吗 代码是avaiable在这里:https://codepen.io/yasAFE/pen/BYOVme