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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support61 ?45 No489
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support6161 ?4548 ? ?

Document Tags and Contributors

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