2011-12-18 155 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