2011-12-18 153 views
0

如何在巨大的html的id中精确搜索“-p”并在其后追加一个计数器即-p + counter。请帮忙。搜索并替换“-p”

+1

提供例如HTML(的一部分)和预期结果。 – Tadeck 2011-12-18 05:11:57

+1

我看你是新来的语言(也许一般编码),我的建议是:1)重新输入代码,从不复制/粘贴2)如果你不明白代码不使用它,3)请花更多的时间/精力来写你的问题。哦,并欢迎 – ajax333221 2011-12-18 06:14:22

回答

1

如果你所要求的是在所有的ID,其中XX是一个递增计数器,-pXX更换-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 && id.indexOf("-p") != -1) { 
     elems[i].id = id.replace("-p", "-p" + 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++); 
    } 
} 

OK,你要(根据您的意见),如果你想只-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

你不会在没有'id'属性的元素上出错吗? – nrabinowitz 2011-12-18 04:49:38

+0

@nrabinowitz - 好点 - 固定。 – jfriend00 2011-12-18 04:51:52

+0

它会替换具有“-priority”的id。因为也有-p? – 2011-12-18 05:00:18

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++)); 
}); 
+0

中的html的id,它会替换具有“-priority”的id。因为也有-p? – 2011-12-18 04:59:34

+0

是的。你只希望它在'-p'中替换ids * ending *吗? – nrabinowitz 2011-12-18 05:07:16

+0

我有像“bv-eng-priority-images”,“bv-eng-p-img”和“bv-eng-p”这样的id,我希望替换不会影响第一个id,但p应该在第2个和第三个ID即我不希望计数器来作为-pXXriority在第一个ID ..我认为现在我正在让自己清除 – 2011-12-18 05:35:01