diff --git a/src/Element.php b/src/Element.php
index <HASH>..<HASH> 100644
--- a/src/Element.php
+++ b/src/Element.php
@@ -33,6 +33,8 @@ use DOMElement;
 class Element extends DOMElement implements PropertyAttribute {
 	use LiveProperty, NonDocumentTypeChildNode, ChildNode, ParentNode;
 
+	const VALUE_ELEMENTS = ["BUTTON", "INPUT", "METER", "OPTION", "PROGRESS", "PARAM"];
+
 	/** @var TokenList */
 	protected $liveProperty_classList;
 	/** @var StringMap */
@@ -121,14 +123,20 @@ class Element extends DOMElement implements PropertyAttribute {
 			return $this->$methodName();
 		}
 
-		return $this->getAttribute("value");
+		if(in_array(strtoupper($this->tagName), self::VALUE_ELEMENTS)) {
+			return $this->nodeValue;
+		}
+
+		return null;
 	}
 
 	public function prop_set_value(string $newValue) {
-		$methodName = 'value_set_' . strtolower($this->tagName);
+		$methodName = 'value_set_' . $this->tagName;
 		if(method_exists($this, $methodName)) {
 			return $this->$methodName($newValue);
 		}
+
+		$this->nodeValue = $newValue;
 	}
 
 	public function prop_get_id():?string {
Default value getter/setter property (#<I>)

* Provide mechanism for getting/setting default Element value property



* Only set value attribute for whitelist of element types