簡體   English   中英

使用JS替換DOM中的html

[英]Replace html in DOM using JS

我正在嘗試替換 DOM 中的電話號碼,而與它在 DOM 中的寫入位置無關。 我使用此代碼成功地在 jQuery 中做了類似的事情:

jQuery(document).ready(function($){

     function changePhoneNumbers (phoneContainer) {
    for (var i = 0; i < phoneContainer.length; i++) {
        if (jQuery(phoneContainer[i]).length > 0) {
            replaceFallbackNumber(phoneContainer[i]);
        }   
    }
}
function replaceFallbackNumber (container) {
    var oldNrs = [
        "0123 123456",
        "0123 123456",
    ];
    var newNr = "0231 177293-79";
    for (var i = 0; i < oldNrs.length; i++) {
        jQuery(container).html(jQuery(container).html().replace(oldNrs[i], newNr));
    }
}
var phoneContainer = [
    '.gglenumber',
    '.about_gastrohero',
    '.booklet'
];
changePhoneNumbers(phoneContainer);

});

現在的問題是,在重新設計網站后,電話號碼周圍並不總是有一個具有相同 class 或 id 的 div。 所以我需要找到一種方法來檢查每個 div 中的電話號碼並替換它。 棘手的部分是我目前只能使用 JS vanilla。

我發現的每個解決方案都只會更改整個 html 或添加一些內容,但我找不到有關如何僅更改電話號碼的提示。

有人對如何解決這個問題有任何想法或提示嗎? 以下是一些示例容器

<span class="gglenumber">0231 123456</span> 

<a href="tel:0231 123456" class="link gglenumber">0231 123456</a>

使用 jQuery 可以使用$("element:contains(phonenumbergoeshere)")但如果您需要依賴 Vanilla JS,只需遍歷所有元素,然后在每個元素的 innerHTML

for (var i = 0; i < document.all.length; i++) {
if (document.all[i].innerHTML.search("phonenumbergoeshere") != -1) {
    var elementWithNumber = document.all[i];
    elementWithNumber.innerHTML = elementWithNumber.innerHTML.replace("oldphonenumber", "newphonenumber");
}
}

獲得元素后,您可以使用String.replace()方法將其替換為您的新電話號碼,或者您想要的任何內容,將其設置為新的 innerHTML。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM