javascripthtmljquerydom

How can I get find the attribute name of an element, and all elements with that attribute?


Here is a demo code:

<div id="demo" myAttribute="ok"></div>

Here are two things I want:

  1. the attribute name, ie: 'myAttribute'.
  2. the element that contains the attribute 'myAttribute', ie: the div.

Solution

  • To get a NodeList of Nodes that match a selector

    var list = document.querySelectorAll('[myAttribute]');
    

    list will be Array-like but not inherit from Array. You can loop over it with for and list.length


    To get a NamedNodeMap of the attributes on an Element

    var nnm = elem.attributes;
    

    nnm will be Array-like but not inherit from Array. You can loop over it with for and nnm.length


    To get the value of an attribute on an Element use .getAttribute

    var val = elem.getAttribute('myAttribute');
    

    val will be null if there is no such attribute


    To test the existance of an attribute on an Element use .hasAttribute

    var b = elem.hasAttribute('myAttribute');
    

    b will be a Boolean value, true or false