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>