我碰壁了。 我正在尝试将页面中以“Person 1”开头的所有字符串替换为“Person 1 (ValueFromPreviousField)”。
我无法应用替换以'Person 1'开头的整个字符串逻辑,因此每次我点击更新按钮时,上一个“(ValueFromPreviousField) "留在字符串的末尾(我显然不想要)。
function test() {
var N1 = document.getElementById("Name1").value;
var N2 = document.getElementById("Name2").value;
document.body.innerHTML = document.body.innerHTML.replace(/Person 1 */g, "Person 1 (" + N1 +")").replace(/Person 2/g, "Person 2 (" + N2 +")");
}
这是一个示例 html 的 fiddle :http://jsfiddle.net/ndt50xgo/20/
PS:由于这是由短代码生成的 html,因此我无法为所有这些跨度分配类或 id。
最佳答案
考虑一下:如果您以 x y
开头然后你替换 x
与 x a
,你最终得到 x a y
。现在,如果您替换 x
与 x b
之后,你最终会得到 x b a y
,因为没有任何因素导致您的文本恢复为 x y
第一的。这同样适用于你的例子。您的正则表达式还应该匹配您添加的任何文本,以确保它也被替换。
所以,而不是 /Person 1 */g
它可能有/Person 1( \(.*?\))?/g
和 /Person 2 */g
当然/Person 2( \(.*?\))?/g
.
关于Javascript - 替换页面中以以下开头的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843283/