class InteractionElement { constructor(htmlId="", checkStatus=true, disabledBefore=true, disabledAfter=false, hideBefore=true, hideAfter=false) { this.htmlId = htmlId; this.element = (htmlId) => {this.element = document.getElementById(htmlId);} this.checkStatus = checkStatus; this.callbacks = {}; this.disabledBefore = disabledBefore; this.disabledAfter = disabledAfter; this.hideBefore = hideBefore; this.hideAfter = hideAfter; this.element(this.htmlId); } setCallback(trigger, callback, bindThis, args=[]) { this.callbacks[trigger] = { "function": callback, "bindThis": bindThis, "args": args }; } bindThisToCallback(trigger) { let callback = this.callbacks[trigger]; let boundedCallback = callback["function"].bind(callback.bindThis); return boundedCallback; } }