Jquery - 如何替换 div 中的一个词?

Jquery - How to replace one word in a div?

我有一个 div 是从另一个地方复制过来的,我需要更改其中的一个词。这是 html:

<div class="dealer-addy">
    8726 N. Royal Ln<br>
    Irving, TX  75063<br>
    email@aol.com
</div>

我需要更改电子邮件地址,因此我尝试获取 div 中的文本并将字符串拆分为单词,然后更改电子邮件地址。但是,我在处理内部文本时遇到了问题。

这是我的脚本:

var address = $dealerInfo.find(".dealer-addy");
var text = $(address).text();
text = text.replace(/\r?\n|\r/, " ");
var words = $(text).split(" ");

它在 split() 上中断,所以我添加了 replace() 行,现在它在 replace() 行上中断。我假设它因为 'text' 中的换行符而中断,但我不确定该怎么做。

你可以这样做:

Javascript:

var orignalstring = document.getElementById("dealer-addy").innerHTML;
var newstring = orignalstring.replace("email@aol.com","replaced");
document.getElementById("dealer-addy").innerHTML = newstring;

Html:

<div id="dealer-addy">
    8726 N. Royal Ln<br>
    Irving, TX  75063<br>
    email@aol.com
</div>

但是如果您不知道要替换的电子邮件地址是什么,您最好这样做:

Html:

<div class="dealer-addy">
    8726 N. Royal Ln<br>
    Irving, TX  75063<br>
    <span id="email">email@aol.com</span>
</div>

Javascript:

document.getElementById("email").innerHtml = "new email";

var text = $(".dealer-addy").text(); 

function extractEmails ( text ){
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi) ;
}

var email = extractEmails(text);
var value = $(".dealer-addy").text();

value = value.replace(email, "new@email.com"); 
$(".dealer-addy").text(value);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div class="dealer-addy">
    8726 N. Royal Ln<br>
    Irving, TX  75063<br>
    email@aol.com
</div>

这是演示:http://jsfiddle.net/VS7Qe/166/

你可以获取divlastChild,然后使用replaceChild插入你想要的新文本:

document.querySelector('button').addEventListener('click', function() {
  var div = document.querySelector('.dealer-addy');
  var newEmail = 'vitor@whosebug.com';
  div.replaceChild(document.createTextNode(newEmail), div.lastChild);
});
<div class="dealer-addy">
    8726 N. Royal Ln<br>
    Irving, TX  75063<br>
    email@aol.com
</div>
<button>Replace email</button>

这应该可以满足您的要求(email@aol.com 将替换为 newemail@gmail.com)。工作 fiddle:http://jsfiddle.net/bay44km4/3/

HTML:

<div class="dealer-addy">
    8726 N. Royal Ln<br>
    Irving, TX  75063<br>
    email@aol.com
</div>

Javascript:

var dealerAddressHtml = $(".dealer-addy").html();
var dealerAddressArr = dealerAddressHtml.split("\n");
if (dealerAddressArr.length >=3){
    var emailAddress = dealerAddressArr[3];
    dealerAddressHtml = dealerAddressHtml.replace(emailAddress, "newemail@gmail.com");
    $(".dealer-addy").html(dealerAddressHtml);
}