用javascript中的递增数字替换HTML文本

时间:2012-11-29 01:05:34

标签: javascript replace

我有一堆没有HTML的文字,我试图找到所有String的{​​{1}}实例替换<span id="x">String</span> 问题是我每次尝试增加x以获得一堆唯一可识别的跨度而不是相同的跨度。
获取String的所有实例都没有问题,但对于我的生活,我无法使增量工作。我能找到的所有帮助似乎都是针对与此相反的 任何想法,我可以做什么或在哪里寻求帮助?

编辑:
这是针对ID为&#39;结果&#39;只包含文字。

    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>');

2 个答案:

答案 0 :(得分:4)

我猜你正在使用正则表达式,这很好,但你可以指定一个函数作为replace的第二个参数并在那里做你的逻辑。

执行此操作的MDN文档位于此处 - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter

您可以使用以下内容:

http://jsfiddle.net/gjrCN/2/

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);

如果您希望计数从++x开始而不是x++,则可以将0更改为1

答案 1 :(得分:1)

参考these docs

您可以将函数传递给String.replace方法,以允许您在每次调用时递增计数器并使用它来设置您的ID:

var forReplacements = "I do like a String that's a nice long String with Strings in it";

var incrementer = (function() {
    var counter = -1;
    var fn = function(match) {
        counter++;
        return "<span id='"+counter+"'>"+match+"</span>";
    };
    fn.reset = function() {
        counter = -1;
    }
    return fn;
}());
var newString = forReplacements.replace(/String/g, incrementer )

请参阅this fiddle以了解相关信息

相关问题