【问题标题】:How to replace a text with a certain ID with javascript如何用javascript替换具有特定ID的文本
【发布时间】:2014-03-06 06:39:26
【问题描述】:

为了学习,我正在使用 JavaScript 做一些初学者练习,但我遇到了一个问题。

我想要完成的是用某个 ID 替换文本。我有 3 个链接,所有链接都带有文本“报价”,它们都有自己的 ID(q1、q2、q3)。然而,我调用的函数正在替换“Quote”的第一个实例,所以问题显然是我的函数。

我怎样才能让它只替换那个ID“报价”。

这是我的功能:

function quotation(c){
    if ( c == q1){
    var x = document.getElementByID("q1");
    document.body.innerHTML = document.body.innerHTML.replace(x.innerHTML, 'Hello World');
}

【问题讨论】:

  • 没错.replace 只替换了一个实例。您需要使用正则表达式。例如,在您的情况下new RegExp(x.innerHTML,"g") g 代表全局。或者,使用 for 循环。
  • @BenjaminGruenbaum 我还没有了解 RegExp
  • @BenjaminGruenbaum 我也忘了提到我为 q2 和 q3 做了这个。和 q3 改变 q1。我想要它,所以 q3 只更改 q3。很抱歉漏掉了那部分
  • 您的 id 以哪种格式存在?

标签: javascript html text replace


【解决方案1】:

根据您的代码,我将 HTML 框架为

<a id='q1'>Quota</a>
<a id='q2'>Quota</a>
<a id='q3'>Quota</a>

根据您的代码,您正在更改 q1 元素的文本。所以它按预期工作。由于一些极端情况,我弄乱了我的答案。现在你需要做的只是添加一个类到你的a 标签中,比如

<a id='q1' class='q'>Quota</a>
<a id='q2' class='q'>Quota</a>
<a id='q3' class='q'>Quota</a>

在你的函数中,迭代每个元素;这样您就可以替换所有元素。

var x = document.getElementsByClassName("q");
for (var i = 0; i < x.length; i++) {
    document.body.innerHTML = document.body.innerHTML.replace(x[i].innerHTML, 'Hello World');
}

JSFiddle

希望你能理解。

【讨论】:

  • 不(阅读他描述的行为),另外,- .replace 中没有第三个“g”参数
  • @BenjaminGruenbaum - 实际上您可以将标志指定为第三个参数,但它不是标准化或推荐的。
  • @j08691 仅当您传递以 iirc 开头的正则表达式时,并且仅在某些浏览器中。例如在 Chrome 和 IE11 中 "HHHHH".replace("H","A","g") 返回 "AHHHH"` 但在 Firefox 中它可以工作。
  • @j08691 之前的评论是不正确的 - 只有当你传递一个 string (在 firefox 中)
  • @BenjaminGruenbaum 你说得对,我查过了。相反,如果我这样尝试"HHHHH".replace(/H/g,"A"),它会给出正确的答案"AAAAA"。这是fiddle 在 chrome 和 ff 中工作
【解决方案2】:

如果我理解正确的话,就这么简单JSFiddle

<a id="q1" href="#">Quote</a>
<a id="q2" href="#">Quote</a>
<a id="q3" href="#">Quote</a>

<script type="text/javascript">

  function quotation(id, text) {
    var q = document.getElementById(id);
    if (q) q.innerHTML = text;
  }
  quotation('q1', 'Hello World');

</script>

【讨论】:

  • @user3075178 将整个 BODY 的内部 HTML 替换为与“引用”匹配的任何内容,因为那是 x.innerHTML。这就是为什么每个元素都在变化。只需更改 x.innerHTML,因为您已经找到了正确的元素!
猜你喜欢
  • 2022-10-04
  • 2019-01-23
  • 1970-01-01
  • 2016-02-04
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
相关资源
最近更新 更多