我有一堆没有 HTML 的文本,我试图找到所有替换 String
的所有实例与 <span id="x">String</span>
问题是我每次都尝试增加 x 以获得一堆唯一可识别的跨度,而不是相同的跨度。
我可以毫无问题地获取 String 的所有实例,但是对于我来说,我无法让增量工作。我能找到的所有帮助似乎都与此相反。
有什么想法我可以做什么或从其他地方寻求帮助吗?
编辑:
这是针对 ID 为“result”且仅包含文本的 div。
var target = "String";
var X = //the number I was trying to increment
var re = new RegExp(" " + target + " ","g");
document.getElementById('result').innerHTML = document.getElementById('result').innerHTML.replace(re, '<span id="' + X + '">' + target + '</span>');
最佳答案
我猜您使用的是正则表达式,这很好,但您可以指定一个函数作为 replace
的第二个参数,并在那里执行您的逻辑。
执行此操作的 MDN 文档在此处 - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter
你可以使用这样的东西:
function replacer(orig, target) {
var x = 0;
var re = new RegExp(target, "g");
var ret = orig.replace(re, function (match) {
return "<span id='" + (++x) + "'>" + match + "</span>";
});
return ret;
}
var example = "String Stringasdf String2344 String";
var replaced = replacer(example, "String");
console.log(replaced);
如果您希望计数从 0
而不是 1
开始,您可以将 ++x
更改为 x++
>.
关于javascript - 用javascript中的递增数字替换HTML文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617157/