From e3678356e1c0e50de96a3a142d703c8797c1476f Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 2 Aug 2024 03:06:03 +0800 Subject: [PATCH] Fix createElementFromAttrs bug (#31751) The "false" value was not handled correctly, it would cause bugs in the future (fortunately, this behavior is not used in code yet). --- web_src/js/utils/dom.test.ts | 4 +++- web_src/js/utils/dom.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/web_src/js/utils/dom.test.ts b/web_src/js/utils/dom.test.ts index d873484969..13df82d9b4 100644 --- a/web_src/js/utils/dom.test.ts +++ b/web_src/js/utils/dom.test.ts @@ -10,7 +10,9 @@ test('createElementFromAttrs', () => { class: 'cls-1 cls-2', 'data-foo': 'the-data', disabled: true, + checked: false, required: null, + tabindex: 0, }); - expect(el.outerHTML).toEqual(''); + expect(el.outerHTML).toEqual(''); }); diff --git a/web_src/js/utils/dom.ts b/web_src/js/utils/dom.ts index 8d75c724de..82e7b755a5 100644 --- a/web_src/js/utils/dom.ts +++ b/web_src/js/utils/dom.ts @@ -297,7 +297,7 @@ export function createElementFromAttrs(tagName, attrs) { const el = document.createElement(tagName); for (const [key, value] of Object.entries(attrs)) { if (value === undefined || value === null) continue; - if (value === true) { + if (typeof value === 'boolean') { el.toggleAttribute(key, value); } else { el.setAttribute(key, String(value));