2012-11-29 25 views
1

我有一堆沒有HTML的文本,我試圖找到所有替換String的所有實例<span id="x">String</span>
捕捉是我試圖每次增加x得到一堆獨特的可識別的跨度而不是相同的跨度。
我沒有問題得到字符串的所有實例,但對於我的生活,我無法獲得工作增量。我能找到的所有幫助似乎都是針對與此相反的做法。
任何想法我可以做什麼或在哪裏尋求幫助?在javascript中用增加的數字替換HTML文本

編輯:
這是針對與ID'結果'只包含文本的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>'); 
+1

顯示我們你的代碼。你的問題沒有什麼意義。 – Madbreaks

回答

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

您可以更改++xx++如果你想計數開始在0而不是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看到它在行動