2017-06-12 28 views
0

傢伙,當我試圖替換文本框中輸入某個值,它僅替換第一個值和它不是更換整個對話。查找和替換不工作

在文本框中輸入我的談話看起來像

用戶1 Prefix_ago 用戶2 Prefix_ago 用戶1 Prefix_ago

我想只有prefix_ago替換:

function copy() { 
 
    var text = document.getElementById('result1').value; 
 
    document.getElementById('id1').innerHTML = text; 
 
    $('#id1').each(function() { 
 
    var text = $(this).text(); 
 
    $(this).text(text.replace('prefix_ago', ' : ')); 
 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea class="result" id="result1" rows="10" cols="150" style="font-size:11px;resize: none; width:225px;"></textarea> 
 
<button class="btn58" id="btn" onClick="copy()"> Copy & Replace</button> 
 
<div id="id1"> 
 

 
</div>

我有價值叫Prefix_ago這是重複多次在我的段我想替換噸帽子冒號「:」這些代碼是工作,但它僅替換第一個值,而不是整個段落

+2

的可能的複製[如何更換在JavaScript字符串的所有出現?(https://stackoverflow.com/questions/1144783/how-to-替換JavaScript中的所有字符串) – mrogers

+2

爲什麼使用'.each()'循環一個元素('#id1')?只需直接訪問該元素。 –

+0

'string.replace(str,str)'確實只會替換第一個出現,與'string.replace(regex,str)'相反,它可以取代所有的標記。 ↑↑這個問題的第一個答案只是將兩條評論聯繫起來,是相當全面的。 – Boris

回答

0

答案的核心是,你需要包括對正則表達式爲它匹配「G」選項不止一個實例。

也就是說,你的代碼過於複雜 - 在單個輸出字段上不需要$.each,或者在改變它之前將文本複製到輸出字段。下面是一個簡化版本:

function copy() { 
 
    var txt = $('#result1').val().replace(/prefix_ago/g, ' : '); 
 
    txt = txt.replace(/\n/g, '<br>'); // <-- per comments below 
 
    $('#id1').html(txt); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea id="result1" rows="10" cols="150"> 
 
test prefix_ago test 
 
prefix_ago test  
 
test prefix_ago test 
 
prefix_ago test 
 
</textarea> 
 
<button onclick="copy()"> Copy & Replace</button> 
 
<div id="id1"> 
 
</div>

+0

如果downvote是因爲我沒有充分解釋答案,我已經更新。如果這不是原因,我願意提供建議! –

+0

由於其完美的工作。我有用戶之間的對話,但這個代碼只是包所有線路,一段..我是新來的Jquery你能幫我上的東西\ n或需要更新 –

+0

談話看起來像下面,但我我得到一個行用戶1個prefix_ago 用戶2 prefix_ago 用戶1個prefix_ago 用戶2 prefix_ago 用戶1個prefix_ago 用戶2 prefix_ago –