Jeżeli masz w Twoim kodzie html, taki zapis
<span id="coin" class="coin">0 coins</span>
to nie potrzebujesz wstawiać wartości coins w onload, wystarczy, że zapiszesz zdarzenie click do img-a oraz "odwołaj się" bezpośrednio do elementu id="coin" zamiast wstawiać
... = '<span id="coin" class="coin">'+coins+' coins</span>';
Propozycja
<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
<link rel="stylesheet" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="container" class="container">
<div id="resources" class="resources">
<div id="coins" class="coins">
<span id="coin" class="coin">0 coins</span>
</div>
</div>
<div id="clicker" class="clicker">
<img id="doge" class="doge" width="200" height="200" src="img/doge.png" />
</div>
</div>
</body>
</html>
let coins = 0;
const clicker_img = document.getElementById('doge');
const coin_span = document.getElementById('coin');
clicker_img.addEventListener('click', () => {
// możesz też ... ;-)
// coin_span.textContent = ++coins + ' coin' + ((coins == 1) ? '':'s');
coin_span.textContent = ++coins + ' coins';
});
[ Funkcja strzałkowa ]