console.log(planet) вызывается до кода содержащего .innerHtml . Разве в таком случае он не должен содержать старое значение? console.log(planet); , который находится до planet.innerHTML = "Red Alert: hit by phaser fire!"; выводит строчку как будто уже измененнено содержание тега, хотя по идее в planet должно хранится <p id="greenplanet">All <em>is</em> well</p>