나는 단어 목록을 가지고 있으며이를 DOM에서 바꾸려고합니다.Pure Javascript - DOM에서 단어 목록 찾기/바꾸기
바꾸기가 작동하지만 문제가 있습니다. 및 대체 텍스트 후에는 원하지 않는 슬래시 바 박았 전에
또한, 내가 좋아하는, HTML 태그로 대체 단어를 마무리해야 할 (즉 여단 감소를 >은/기타 WORD 1/여단을 감소) . 당신은 여기에 코드를 볼 수 있습니다
(여단 > 감소 즉 기타 WORD 1 여단 감소) : JS의 https://jsfiddle.net/realgrillo/9uL6ofge/
var elements = document.getElementsByTagName('*');
var words = [
[/(^|\s)([Tt]o)(\s|$)/ig, 'OTHER WORD 1'],
[/(^|\s)([Aa]nd)(\s|$)/ig, 'OTHER WORD 2']
];
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
for (var j = 0; j < element.childNodes.length; j++) {
var node = element.childNodes[j];
if (node.nodeType === 3) {
var text = node.data;
for (var k = 0; k < words.length; k++)
{
var from = new RegExp(words[k][0]);
var to = new RegExp('$1' + words[k][1] + '$3');
var replacedText = text.replace(from, to);
//console.log("from: " + from);
//console.log("to: " + to);
//console.log("toDo: " + toDo);
if (replacedText !== text)
{
element.innerHTML = element.textContent.replace(from, to);
console.log("text: " + text);
console.log("replacedText: " + replacedText);
}
}
/*
//
//!!!!THIS CODE FOR 1 WORD WORKS!!!! I need to do this for the list of words.
//
var replacedText = text.replace(/(^|\s)([Tt]o)(\s|$)/ig, '$1OTHER WORD$3');
if (replacedText !== text) {
element.innerHTML = element.textContent.replace(/(^|\s)([Tt]o)(\s|$)/ig, '$1<b class=modified>OTHER WORD</b>$3');
}
*/
}
}
}
석사를, 당신이 나를 도와 드릴까요? 순수한 자바 스크립트가 아니라 jQuery하시기 바랍니다.
감사합니다.
이 질문을 Upvoting, 그것은 명확한 목표를 가지고 있으며 간단하고 testable 코드 샘플이 있습니다. – axelduch