2017-04-06 59 views
0

這是我的js函數的Javascript .replace() - 保持HTML元素

function con (text_input){ 
    return text_input 
     .replace(/O/g, 0) 
     .replace(/I/g, 1) 
     .replace(/o/g, 0) 
     .replace(/i/g, 1) 
     .replace(/t/g, 4) 
     .replace(/d/g, 9) 
} 

在這方面,我需要把所有的HTML元素,如<td><div>等,但此函數替換HTML元素也。例如: console.log(con('<td>OIoitd</td>'))返回<49>010149</49>但我需要<td>010149</td>。我怎樣才能做到這一點?

+0

要麼只是通過在內部文本,而不是整個DOM元素,或者讓你的正則表達式有點聰明,能不能在<搜索> – AndrewP

+0

除非你」回到某種受限制的HTML子集中,您需要一個HTML解析器。雖然不需要是樹型的,您可以使用https://www.npmjs.com/package/htmlparser2在'text'事件中進行替換,注意正確地轉義。 – Ryan

+0

@AndrewP是的,但我不知道該怎麼做:(並辯論動態 –

回答

0

更新了我的代碼。希望這一個字出來,用高雅IM的jQuery:

var text_input ='<td>OIoitd</td>'; 
function con (text_input){ 
    //getting text to be replaced 
    var innerText = $(text_input)[0].innerHTML; 
    //getting text to be replaced with 
    var newInnerText = $(text_input)[0].innerHTML.replace(/O/g, 0).replace(/I/g, 1).replace(/o/g, 0).replace(/i/g, 1).replace(/t/g, 4).replace(/d/g, 9); 
    //replacing text 
    return text_input.replace(innerText,newInnerText); 
} 
+0

如果不是'​​',但一些其他的HTML元素,然後呢?和我的'text_input'包含html元素 –

+0

你應該總是解釋你代碼中的答案。如果您引入問題中未提及的庫,則使用哪些庫。 '$'最有可能是jQuery,但是從這個問題來看,如果使用這個腳本服務器端或客戶端的OP是不明確的。除此之外,這將忽略你將它硬編碼爲td,只有在text_input始終爲' text沒有任何html標籤'的情況下,纔會工作,因爲它會去掉'text_input'中的所有html標籤。 –

+0

我的不好。不努力編碼父元素。 –