Element.getAttributeNames() returns the attribute names of the element as an Array of strings. If the element has no attributes it returns an empty array.

Using getAttributeNames() along with getAttribute(), is a memory efficient and performant alternative to accessing Element.attributes.


let attributeNames = element.getAttributeNames();


// Iterate over element's attributes
for(let name of element.getAttributeNames())
	let value = element.getAttribute(name);
	console.log(name, value);


if (Element.prototype.getAttributeNames == undefined) {
  Element.prototype.getAttributeNames = function () {
    var attributes = this.attributes;
    var length = attributes.length;
    var result = new Array(length);
    for (var i = 0; i < length; i++) {
      result[i] = attributes[i].name;
    return result;


Specification Status Comment
The definition of 'Element.getAttributeNames' in that specification.
Living Standard Initial definition

Browser compatibility

Update compatibility data on GitHub
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic supportChrome Full support 61Edge Full support 18Firefox Full support 45IE No support NoOpera Full support 48Safari Full support 9WebView Android Full support 61Chrome Android Full support 61Edge Mobile ? Firefox Android Full support 45Opera Android Full support 48Safari iOS ? Samsung Internet Android ?


Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown

Document Tags and Contributors

Contributors to this page: fscholz, mfuji09, Yaffle, jpmedley, tophf, adria
Last updated by: fscholz,