搜索并替换“-p”

时间:2011-12-18 04:37:50

标签: javascript jquery

如何在巨大的html的id中搜索确切的“-p”并在它之后附加一个计数器,即-p + counter。请帮忙。

2 个答案:

答案 0 :(得分:1)

如果您要求的是在所有ID中将-p替换为-pXX,其中XX是一个增加的计数器,您可以这样做:

var id, counter = 1;
var elems = document.getElementsByTagName("*");
for (var i = 0, len = elems.length; i < len; i++) {
    id = elems[i].id; 
    if (id && id.indexOf("-p") != -1) {
        elems[i].id = id.replace("-p", "-p" + counter++);
    }
}

如果您只是尝试添加“+ counter”文本,那么您可以这样做:

var id;
var elems = document.getElementsByTagName("*");
for (var i = 0, len = elems.length; i < len; i++) {
    id = elems[i];
    if (id && id.indexOf("-p") != -1) {
        elems[i].id = id.replace("-p", "-p+counter");
    }
}

如果您想要的(您的原始帖子不是很清楚)是仅替换整个id为“-p”的id值,那么您可以使用:

var counter = 1;
var elems = document.getElementsByTagName("*");
for (var i = 0, len = elems.length; i < len; i++) {
    if (elems[i].id == "-p") {
        elems[i].id += counter++);
    }
}

好的,第四次猜测你想要什么(基于你的评论)如果你想要-p替换只有当p后面没有另一个字母时才会被替换:

var id, counter = 1;
var elems = document.getElementsByTagName("*");
for (var i = 0, len = elems.length; i < len; i++) {
    id = elems[i].id; 
    if (id) {
        elems[i].id = id.replace(/\-p([\W_]|$)/, "-p" + counter++ + "$1");
    }
}

而且,这是一个演示:http://jsfiddle.net/jfriend00/Ug7VN/

最后一个的jQuery版本可以这样工作:

var counter = 1;
$('[id]').each(function() {
    this.id = this.id.replace(/\-p([\W_]|$)/, "-p" + counter++ + "$1");
});

答案 1 :(得分:1)

使用jQuery,这应该简单:

var counter = 0;
$('[id*="-p"]').each(function() {
    $(this).attr('id', $(this).attr(id).replace('-p', '-p' + counter++));
});

修改:如果您只想要-p中ID 结尾的项目,则可以使用以下内容(请注意不同的选择器):

var counter = 0;
$('[id$="-p"]').each(function() {
    $(this).attr('id', $(this).attr(id).replace(/-p$/, '-p' + counter++));
});