Home > Software engineering >  JS can't set style property
JS can't set style property

Time:11-30

Ok let's look at this part of the code -

$(tbody).find('tr').each((i, oldTbodyTr) => {
    newTr = document.createElement('tr');
    $(oldTbodyTr).find('td').each((i, oldTd) => {
        let newTd = document.createElement('td');
        newTd.innerHTML = oldTd.innerHTML;
        newTd.classList = oldTd.classList;
        newTd.style = oldTd.style; //Doesn't work
        newTr.appendChild(newTd);
    });
    newTableTbody.appendChild(newTr);
});

It creates a new table body by looping through all rows in tbody of an already existing table. Everything is fine, except that the style of the old td doesn't transfer to the new td element. I can't figure out why.

CodePudding user response:

If you want to copy inline styles, you could try newTd.style.cssText = oldTd.style.cssText since style itself is immutable.

See more about style.cssText.

const source = document.getElementById('source');
const target = document.getElementById('target');

target.style.cssText = source.style.cssText;
<p id="source" style="color: red; background-color: blue; font-size: 20px;">Source</p>
<p id="target">Target</p>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

  • Related