我撞到墙了。我正在尝试将页面中所有以"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:http://jsfiddle.net/ndt50xgo/20/的小提琴
PS:由于这是由短代码生成的html,我不能将类或id分配给所有这些跨度。
发布于 2018-12-19 09:26:21
考虑一下这一点:如果您从x y
开始,并用x a
替换x
,那么您最终将使用x a y
。现在,如果您在此之后将x
替换为x b
,您最终将得到x b a y
,因为没有任何东西会导致您的文本首先恢复为x y
。同样的道理也适用于你的例子。您的正则表达式也应该匹配您添加的任何文本,以确保它也被替换。
所以,它可以用/Person 1( \(.*?\))?/g
代替/Person 1 */g
,当然也可以用/Person 2 */g
代替/Person 2( \(.*?\))?/g
。
https://stackoverflow.com/questions/53843283
复制相似问题