diff --git a/Source/Element/Element.js b/Source/Element/Element.js index 0233b0103..53936ddb3 100644 --- a/Source/Element/Element.js +++ b/Source/Element/Element.js @@ -507,7 +507,7 @@ var propertyGetters = {}, propertySetters = {}; var properties = {}; Array.forEach([ 'type', 'value', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', - 'frameBorder', 'readOnly', 'rowSpan', 'tabIndex', 'useMap' + 'frameBorder', 'rowSpan', 'tabIndex', 'useMap' ], function(property){ properties[property.toLowerCase()] = property; }); @@ -555,7 +555,7 @@ Array.forEach(bools, function(bool){ Object.append(propertySetters, { 'class': function(node, value){ - ('className' in node) ? node.className = value : node.setAttribute('class', value); + ('className' in node) ? node.className = (value || '') : node.setAttribute('class', value); }, 'for': function(node, value){ @@ -564,26 +564,30 @@ Object.append(propertySetters, { 'style': function(node, value){ (node.style) ? node.style.cssText = value : node.setAttribute('style', value); + }, + + 'value': function(node, value){ + node.value = value || ''; } }); +propertyGetters['class'] = function(node){ + return ('className' in node) ? node.className || null : node.getAttribute('class'); +}; + /* getProperty, setProperty */ Element.implement({ setProperty: function(name, value){ - var lower = name.toLowerCase(); - if (value == null){ - if (!booleans[lower]){ - this.removeAttribute(name); - return this; - } - value = false; + var setter = propertySetters[name.toLowerCase()]; + if (setter){ + setter(this, value); + } else { + if (value == null) this.removeAttribute(name); + else this.setAttribute(name, value); } - var setter = propertySetters[lower]; - if (setter) setter(this, value); - else this.setAttribute(name, value); return this; }, @@ -968,7 +972,7 @@ if (el.getAttributeNode('id')) Element.Properties.id = { return this.id || null; }, erase: function(){ - this.id = this.getAttributeNode('id').value = null; + this.id = this.getAttributeNode('id').value = ''; } }; /**/ diff --git a/Specs b/Specs index f1c86435f..1bca15d25 160000 --- a/Specs +++ b/Specs @@ -1 +1 @@ -Subproject commit f1c86435f703534791c492560d790bfd4d2ea24f +Subproject commit 1bca15d25d0fca190aeb4e7b12e261d135b6b311