繁体   English   中英

用 JS 替换 span 的内容

[英]Replace content of span with JS

我有多个跨度元素: <span class="sac-chat-name">username : </span>

我想删除冒号前的第一个空格。

我用这样的 JS 试过:

var y = document.getElementsByClassName("sac-chat-name");
var i;
for (i = 0; i < y.length; i++) {
  y[i].replace(" : ", ": ");
}

但这不起作用:

Uncaught TypeError: y[i].replace is not a function …

错误在哪里?

您的代码中有两个问题:

  1. 您使用的是元素本身而不是文本内容,您必须使用innerTexttextContent来使用文本。
  2. replace()方法返回一个新字符串,其中部分或所有模式匹配项被替换项替换 您必须通过replace()的重新调整结果重新分配元素文本内容:

 var y = document.getElementsByClassName("sac-chat-name"); var i; for (i = 0; i < y.length; i++) { y[i].textContent = y[i].textContent.replace(" : ", ": "); }
 <span class="sac-chat-name">username : </span>

JavaScript 替换方法是一个字符串原型。 话虽如此,您不能在节点上使用它。

var y = document.getElementsByClassName("sac-chat-name");
var i;
for (i = 0; i < y.length; i++) {
  // get the current content 
  var curText = y[i].innerHTML;
  // sanitize content
  var sanitized = curText.replace(" : ", ": ");
  // replace content
  y[i].innerHTML = sanitized;
}

因此,首先您必须获取元素的当前内容。 您可以使用innerHTML执行此操作,然后您可以清理字符串并替换元素的 HTML。

Mamun 说的对,你也可以去扔一个Array,forEach 循环更容易阅读

var spans = Array.from(document.getElementsByClassName('sac-chat-name'));
spans.forEach(span => {

   span.innerHTML = span.innerHTML.replace(" :", ":");
});

为了替换字符串中的特定空格,您也可以使用 REGEX。

 y.textContent.replace(/\s/g,'');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM