diff --git a/packages/happy-dom/src/nodes/html-option-element/HTMLOptionElement.ts b/packages/happy-dom/src/nodes/html-option-element/HTMLOptionElement.ts index a692e5e00..8a56a4c97 100644 --- a/packages/happy-dom/src/nodes/html-option-element/HTMLOptionElement.ts +++ b/packages/happy-dom/src/nodes/html-option-element/HTMLOptionElement.ts @@ -109,7 +109,7 @@ export default class HTMLOptionElement extends HTMLElement implements IHTMLOptio * @returns Value. */ public get value(): string { - return this.getAttributeNS(null, 'value') || ''; + return this.getAttributeNS(null, 'value') || this.textContent; } /** diff --git a/packages/happy-dom/test/nodes/html-option-element/HTMLOptionElement.test.ts b/packages/happy-dom/test/nodes/html-option-element/HTMLOptionElement.test.ts index dc8769636..679435e8f 100644 --- a/packages/happy-dom/test/nodes/html-option-element/HTMLOptionElement.test.ts +++ b/packages/happy-dom/test/nodes/html-option-element/HTMLOptionElement.test.ts @@ -25,6 +25,12 @@ describe('HTMLOptionElement', () => { element.setAttribute('value', 'VALUE'); expect(element.value).toBe('VALUE'); }); + + it('Returns the text IDL value if no attribute is present.', () => { + element.removeAttribute('value'); + element.textContent = 'TEXT VALUE'; + expect(element.value).toBe('TEXT VALUE'); + }); }); describe('set value()', () => {