Uczymy się zmieniać textContent elementów zachowując jednocześnie ich innerHTML. Do dzieła.

Rzućmy na to okiem:

window.addEventListener("DOMContentLoaded", function(){

    let para = document.getElementById('para');
    let txt = para.textContent;
    console.log(txt);
    //bla bla bla
   
});

Dodajemy pogrubienie:

window.addEventListener("DOMContentLoaded", function(){
   
    let para = document.getElementById('para');
    let txt = para.textContent;
    para.innerHTML = "<b>"+txt+"</b>";

    console.log(para.innerHTML);
    //<b>bla bla bla</b>
    console.log(para.textContent);
    //bla bla bla
   
});

Wydaje się okej. Teraz zmieńmy tekst już po pogrubieniu:

window.addEventListener("DOMContentLoaded", function(){
   
    let para = document.getElementById('para');
    let txt = para.textContent;
    para.innerHTML = "<b>"+txt+"</b>";

    console.log(para.innerHTML);
    //<b>bla bla bla</b>
    console.log(para.textContent);
    //bla bla bla

    para.textContent = 'New text';
    console.log(para.innerHTML);
    //New text
   
});

Pogrubienie znika. Cóż, musimy zrobić coś takiego:

para.childNodes.forEach(node => {
        console.log(node);
    });
//<b>

Ok, to rozwiązanie nie jest idealne, ale się sprawdzi:

window.addEventListener("DOMContentLoaded", function(){
    
    let para = document.getElementById('para');
    let txt = para.textContent;
    para.innerHTML = "<b>"+txt+"</b>";

    console.log(para.innerHTML);
    //<b>bla bla bla</b>
    console.log(para.textContent);
    //bla bla bla

    para.childNodes.forEach(node => {
        node.textContent = 'new text';
    });
    
    console.log(para.innerHTML);
    //<b>new text</b>
   
});

Więcej w następnych lekcjach…