UNPKG

actualize

Version:
37 lines (35 loc) 799 B
/** * @param {*|Element} nodeA * @param {*|Element} nodeB */ function setAttrs(nodeA, nodeB) { const names = new Set let attr, value for(attr of nodeA.attributes) { names.add(attr.name) value = nodeB.getAttribute(attr.name) if(value === null) { nodeA.removeAttribute(attr.name) continue } if(attr.value !== value) { attr.value = value } } for(attr of nodeB.attributes) { if(!names.has(attr.name)) { nodeA.setAttribute(attr.name, attr.value) } } switch(nodeA.tagName) { case 'OPTION': nodeA.selected = nodeB.selected break case 'INPUT': nodeA.checked = nodeB.checked nodeA.indeterminate = nodeB.indeterminate case 'TEXTAREA': nodeA.value = nodeB.value } } module.exports = setAttrs