javascript - 在 DOM 错误中查找全部替换

标签 javascript replace find

我正在尝试查找所有出现的 ?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/

相关文章:

javascript - 使用 chrome.history.deleteRange 未完全删除历史记录

javascript - 尝试使用 JavaScript 中的 setTimeout 函数更改按钮的颜色

javascript - 如果未选中复选框,如何减去一个值

macos - 不区分大小写的搜索并用 sed 替换

c++ - 按值排序的 std::find 和 std::any_of

javascript - Cocos2d-js 编辑框未定义

c# - C#中如何替换字符串中的字符

用另一个变量的值替换一个变量中的 NA

regex - 查找/sed : How can I recursively search/replace a string in files but only for lines that match a particular regexp

regex - 如何在 find 命令下使用正则表达式