JavaScript generic ASN.1 parser (mirror)

Only associate buttons' `onClick` when they exist. (to allow removing them)

+12 -5
+12 -5
index.js
··· 125 125 } 126 126 } 127 127 // set up buttons 128 - id('butDecode').onclick = function () { 128 + const butClickHandlers = { 129 + butDecode: () => { 129 130 decodeText(area.value); 130 - }; 131 - id('butClear').onclick = function () { 131 + }, 132 + butClear: () => { 132 133 area.value = ''; 133 134 file.value = ''; 134 135 tree.innerHTML = ''; 135 136 dump.innerHTML = ''; 136 137 selectDefs.innerHTML = ''; 137 138 hash = window.location.hash = ''; 138 - }; 139 - id('butExample').onclick = function () { 139 + }, 140 + butExample: () => { 140 141 console.log('Loading example:', examples.value); 141 142 let request = new XMLHttpRequest(); 142 143 request.open('GET', 'examples/' + examples.value, true); ··· 150 151 } 151 152 }; 152 153 request.send(); 154 + }, 153 155 }; 156 + for (const [name, onClick] of Object.entries(butClickHandlers)) { 157 + let elem = id(name); 158 + if (elem) 159 + elem.onclick = onClick; 160 + } 154 161 // set dark theme depending on OS settings 155 162 function setTheme() { 156 163 let storedTheme = localStorage.getItem('theme');