Kleiner Zusatz: Wenn man das DOM über HTML-Strings zusammenbaut, sollte man im Allgemeinen die variablen Inhalte maskieren. Das ist hier nicht zwingend notwendig, da nur Zahlen eingesetzt werden, aber besser man verlässt sich nicht darauf.
// Quelle: https://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
const createCounter = (online, visits) => {
document.body.insertAdjacentHTML(
'beforeend',
`
<aside id="counter">
<h2>User Counter</h2>
<label for="online">Online:</label>
<output id="online">${
escapeHtml(online)
}</output>
<label for="visits">Visits:</label>
<output id="visits">${
escapeHtml(visits)
}</output>
</aside>
`
);
};
BTW: Gibt es keine native Funktion in JS, die HTML maskiert?