我正在尝试查找所有出现的 ?sid=XXXXXXXXXX
并将它们替换为 blank
。我在页面的其他地方使用相同的代码来查找和替换电话号码(例如)。
我正在执行以下命令:
document.body.innerHTML = document.body.innerHTML.replace(/?sid=XXXXXXXXXX/g, '');
它应该编辑的 HTML 示例是:
<a href="/faqs/?sid=XXXXXXXXXX">Frequently Asked Questions</a>
但是我得到以下错误:
Uncaught SyntaxError: Invalid regular expression: /?sid=XXXXXXXXXX/: Nothing to repeat
我不明白为什么它适用于其他字符串而不是这个字符串。我知道上面基本上是将 DOM 内容视为一个长文本字符串,因此查找和替换应该像在电话号码示例中那样操作。我错过了什么?非常感谢您的帮助!
最佳答案
不要使用 innerHTML replace 替换 body 元素的内容,它可能会产生副作用,例如可以删除任何已注册的事件处理程序等....而是定位并替换所需的内容
var as = document.querySelectorAll('a[href*="?sid=XXXXXXXXXX"]');
for (var i = 0; i < as.length; i++) {
var href = as[i].getAttribute('href');
as[i].setAttribute('href', href.replace(/\?sid=XXXXXXXXXX/g, ''));
}
演示:Fiddle
关于javascript - 在 DOM 错误中查找全部替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205502/