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>
