#10 gna
Možno takto. Tá jQuery verzia je predsa len kompaktnejšia ako vanilla.
/**
* @description Nájde a nahradí hľadaný text novou hodnotou v zadefinovanom elemente
*
* @param {string} selector CSS selektor, ktorým nájdeme element
* @param {string} search Hľadaný reťazec
* @param {string} [replace] _[optional]_ Nový reťazec, ktorým bude nahradený nájdený reťazec
*
* @returns {void}
*/
function $replaceElementTextContent(selector, search, replace = '') {
if (!selector?.trim() || !search?.trim()) return;
$(selector).contents().each((index, node) => {
if (node?.textContent?.trim() === search.trim())
node.textContent = replace;
});
}
Použitie:
$replaceElementTextContent(
'label[for=sendNewsletter]',
'Chci odebírat newslettery (určeno pro starší 16 let)',
'Chci odebírat newslettery (Každý týden produkty za akční ceny!)'
);
----------------------
--------------------------
Pre úplnosť aj tá vanilla:
/**
* @description Nájde a nahradí hľadaný text novou hodnotou v zadefinovanom elemente
*
* @param {string} selector CSS selektor, ktorým nájdeme element
* @param {string} search Hľadaný reťazec
* @param {string} [replace] _[optional]_ Nový reťazec, ktorým bude nahradený nájdený reťazec
*
* @returns {void}
*/
function replaceElementTextContent(selector, search, replace = '') {
if (!selector?.trim() || !search?.trim()) return;
document.querySelectorAll(selector).forEach(element => element.childNodes.forEach(node => {
if (node?.textContent?.trim() === search.trim())
node.textContent = replace;
}));
}