

DOM Node Transformer
Write a function transformElement(element, newText, classToAdd, classToRemove) that takes a mock DOM element and updates its properties:
- Sets
element.textContenttonewText. - Adds
classToAddusingelement.classList.add(...). - Removes
classToRemoveusingelement.classList.remove(...). - Returns the element.
Also write a helper function testDOM(textContent, classes, newText, classToAdd, classToRemove) that:
- Creates a mock element:
const element = {
textContent,
classList: {
classes: [...classes],
add(c) { if (!this.classes.includes(c)) this.classes.push(c); },
remove(c) { this.classes = this.classes.filter(x => x !== c); }
}
};- Calls
transformElement(...)and returns a plain object:{ text: element.textContent, classes: element.classList.classes }.
Examples
testDOM("hello", ["star"], "sky", "cloud", "star")
→ { text: "sky", classes: ["cloud"] }
testDOM("old", ["fade"], "new", "glow", "none")
→ { text: "new", classes: ["fade", "glow"] }
solution.js
JAVASCRIPT
Saved as you type
Tests
0 of 3 passing- •change text and remove star classtestDOM("hello", ["star"], "sky", "cloud", "star")expected { text: "sky", classes: ["cloud"] }
- •keep fade and add glow classtestDOM("old", ["fade"], "new", "glow", "none")expected { text: "new", classes: ["fade", "glow"] }
- •no duplicate add, ignore absent removetestDOM("a", ["x", "y"], "b", "x", "z")expected { text: "b", classes: ["x", "y"] }
On the line
+50 XP
Pass all 3 tests to claim it.
