JSFiddle - React, Tailwind, and code Playground

HTML

<input type="range" min="10" max="50" id="test" />

JavaScript

var AttributeObserver = function(element, callback, attribute){
    var MO = (window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver);
    if (MO) {
        var observer = new MO(callback);
        observer.observe(element, { attributes: true, attributeFilter: [attribute] });
    } else if (element.addEventListener) {
        element.addEventListener('DOMAttrModified', function(e){
            if (e.attrName == attribute) {
                callback()
            }
        }, false);
    } else if ("onpropertychange" in document) {
        element.attachEvent ('onpropertychange', function(e){
            if (e.attrName == attribute) {
                callback()
            }
        });

    }
}

var test = document.getElementById("test");
new AttributeObserver(test, function(e){
    alert("now min is: " + test.min)
}, "min")
test.min = 25;