[英]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 …
错误在哪里?
您的代码中有两个问题:
innerText
或textContent
来使用文本。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.