Skip to content Skip to sidebar Skip to footer

Element.dataset In Internet Explorer

I need a way to list the data-* attributes of an element. I would use Object.keys(element.dataset) but IE 9.0 doesn't have dataset support. How should I do this in a way that wor

Solution 1:

element.attributes will give you a NamedNodeList with all attributes of the element. Just check the attribute names if they start with data-

var attributes = element.attributes,
    i = attributes.length;

for (; i--; ){
    if (/^data-.*/.test(attributes[i].name)) {
        console.log(attributes[i].name);
    }
}

Example

Solution 2:

If you are using jQuery, you can access data-* attributes through $.data() method: http://api.jquery.com/data/

Solution 3:

I needed this but also needed access to the keys, so I wrote a function based on the solution given by Andreas:

Element.prototype.dataset_simulated = function(){
  var attributes = this.attributes;
  var simulatedDataset = {};

  for (var i = attributes.length; i--; ){
    if (/^data-.*/.test(attributes[i].name)) {
      var key = attributes[i].name.replace('data-', '');
      var value = this.getAttribute(attributes[i].name);
      simulatedDataset[key] = value;
    }
  }
  return simulatedDataset;
};

And to use it, instead of doing element.dataset, you do element.dataset_simulated().

and here's the fiddle

Edit:

It appears that IE<8 also has no support for Element.prototype, so this can simply be a function with usage like dataset_simulated(elem):

functiondataset_simulated(elem){
  var attributes = elem.attributes;
  var simulatedDataset = {};

  for (var i = attributes.length; i--; ){
    if (/^data-.*/.test(attributes[i].name)) {
      var key = attributes[i].name.replace('data-', '');
      var value = elem.getAttribute(attributes[i].name);
      simulatedDataset[key] = value;
    }
  }
  return simulatedDataset;
};

Solution 4:

You could also try the following method:

[dom_element].getAttribute('[your data-* attribute name]');

Post a Comment for "Element.dataset In Internet Explorer"