2012-11-29 94 views
1

我有一個動態填充的文本字符串。在每一個字符串中,都有一個常用詞:「type」。給定一個存儲爲變量的字符串,我想用javascript來查找單詞「type」,並在它之前放置一個潛水,然後在該字符串之後關閉div。 像這樣:使用javascript將字符串轉換爲dom元素

var string = "Here is some text that contains the word type and more text after"; 

我想最終的結果是,像這樣:

Here is some text that contains the word <div>type and more text after</div> 

我怎麼能去呢?

當前的代碼如下:

var wod = $("#wod a").attr("title"); 
    var newwod = wod.replace("Copyright 2012, GB Blanchard - Learn Spanish: www.braser.com",""); 
    //get ride of example and everythign after it 
    var finalwod = newwod.split("Example")[0]; 
    var newstring = finalwod.replace(/(type.+)/,"<div>$1</div>"); 


    $("#wod span").append(newstring); 
+1

我會寫一些代碼開始。當它不起作用時,回到這裏並告訴我們你有什麼。 –

+0

如果「類型」出現的次數更多,該怎麼辦? –

+0

然後我們要抓住第一個字符串「type」 – JCHASE11

回答

4

只需使用replace

string = string.replace(/(type.+)/,"<div>$1</div>"); 

請注意,這不是當你試圖修改HTML,它由多個複雜的最佳方法結構而不是單個文本節點,但它將適用於此特定情況。

正如傑克已經指出的那樣,你不需要在這裏使用捕獲組,因爲整場比賽使用$&已經可用。

string = string.replace(/type.+/,"<div>$&</div>"); 
+0

我剛剛添加了我的代碼,包括你的。它沒有按預期工作。這對於單個文本節點來說只是一次快速的事情。 – JCHASE11

+0

@ JCHASE11下面是一個[簡單示例](http://jsfiddle.net/KnAKG/),您可以在其中看到這個工作。調試其餘代碼超出了原始問題的範圍。 –

+0

+1。刪除了我的問題;您不需要內存捕獲括號,而是可以在替換字符串中使用'$&'。 –

0

這真的是你有可用的唯一方式嗎?

阿薩德有一個正則表達式的一個很好的例子,但是,他還指出,你的做法是不是最好的做法。

爲什麼你不能有一些結構?

var returnedData = { "type": "div", "text": "I like best practice" }; 
//Might need error checking in future 
var newElement = document.createElement(returnedData.type); 
newElement.innerHTML = returnedData.text; 
$("#wod span").append(newElement);