JSFiddle - React, Tailwind, and code Playground
HTML
<div id="Output"></div>
<input id="inp">
<div id="States"></div>
<select id="sel2" size=2>
<option>this
<option>is
<option>a
<option>test
</select>
CSS
html,body {font:13px verdana}
span {padding:0.5em;display:none}
JavaScript
function GID(id) {
return document.getElementById(id);
}
GID('States').innerHTML= '<select id="sel1">'+
 '<option>'+('Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|Nevada|New Hampshire|New Jersey|New Mexico|New York|North Carolina|North Dakota|Ohio|Oklahoma|Oregon|Pennsylvania|Rhode Island|South Carolina|South Dakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|West Virginia|Wisconsin|Wyoming'.split('|').join('<option>'))+
'</select>';
events= ('resize|scroll|zoom|focus|blur|select|change|submit|reset|'+
'copy|cut|paste|beforecopy|beforecut|beforepaste|'+
'DOMActivate|DOMFocusIn|DOMFocusOut|DOMAttrModified|DOMCharacterDataModified|DOMNodeInserted|DOMNodeInsertedIntoDocument|DOMNodeRemoved|DOMNodeRemovedFromDocument|DOMSubtreeModified|DOMContentLoaded|'+
'deviceorientation|devicemotion|'+
'dragenter|dragover|dragleave|drop|'+
'keydown|keyup|keypress|input|'+
'load|beforeunload|unload|abort|error|hashchange|popstate|'+
'click|dblclick|mousedown|mouseup|mouseover|mousemove|mouseout|mousewheel|wheel|'+
'touchstart|touchmove|touchend|touchcancel|'+
'readystatechange|load|loadstart|loadend|abort|error|progress|timeout|'
).split('|');
var S1= GID('sel1');
var S2= GID('sel2');
var INP= GID('inp');
var spans= {};
var count= {};
for(var i = 0 ; i < events.length ; i++) {
var ei= events[i];
count[ei]= 0;
spans[ei]= document.createElement('span');
GID('Output').appendChild(spans[ei]);
(function(i) {
INP.addEventListener(events[i], function(){showEvent(i)});
S1.addEventListener(events[i], function(){showEvent(i)});
S2.addEventListener(events[i], function(){showEvent(i)});
})(i);
}
function showEvent(i) {
count[events[i]]++;
spans[events[i]].innerHTML=...