add Element.style setter

This commit is contained in:
Karl Seguin
2026-06-05 18:46:05 +08:00
parent 23120885be
commit f0060dd677
2 changed files with 18 additions and 1 deletions

View File

@@ -167,6 +167,18 @@
}
</script>
<script id=style>
{
const el = document.createElement('div');
el.style = 'color:red';
const s1 = el.style;
testing.expectEqual('red', el.style.color);
el.style = 'color:blue';
testing.expectEqual('blue', el.style.color);
testing.expectEqual(true, s1 === el.style);
}
</script>
<script id=click>
{
let clicked = 0;

View File

@@ -883,6 +883,11 @@ fn getStyle(self: *Element, frame: *Frame) ?*CSSStyleProperties {
return frame._element_styles.get(self);
}
pub fn setStyle(self: *Element, value: []const u8, frame: *Frame) !void {
const style = try self.getOrCreateStyle(frame);
try style.asCSSStyleDeclaration().setCssText(value, frame);
}
pub fn getClassList(self: *Element, frame: *Frame) !*collections.DOMTokenList {
const gop = try frame._element_class_lists.getOrPut(frame.arena, self);
if (!gop.found_existing) {
@@ -1832,7 +1837,7 @@ pub const JsApi = struct {
pub const className = bridge.accessor(Element.getClassName, Element.setClassName, .{ .ce_reactions = true });
pub const classList = bridge.accessor(Element.getClassList, Element.setClassList, .{ .ce_reactions = true });
pub const dataset = bridge.accessor(Element.getDataset, null, .{});
pub const style = bridge.accessor(Element.getOrCreateStyle, null, .{});
pub const style = bridge.accessor(Element.getOrCreateStyle, Element.setStyle, .{});
pub const attributes = bridge.accessor(Element.getAttributeNamedNodeMap, null, .{});
pub const hasAttribute = bridge.function(Element.hasAttribute, .{});
pub const hasAttributes = bridge.function(Element.hasAttributes, .{});