Почему вывод не обновляется автоматически на location.hash? - PullRequest
0 голосов
/ 17 января 2019

хэш нового местоположения не выводится при нажатии на ссылку.

Я затрудняюсь понять, почему браузер не выводит обновленную переменную.

<html>
<body>
<p></p>
<a href="#2019-01">1</a>
<a href="#2019-02">2</a>
</body>
<script>
var p = document.querySelector('p');
p.innerHTML = location.hash; 
</script>
</html>

Когда я нажимаю на первую ссылку, адрес в браузере меняется на # 2019-01, но p.innerHTML ничего не отображает. Я ожидал, что он покажет # 2019-01.

Если я нажму crtl r, чтобы перезагрузить страницу, p.innerHTML отобразит # 2019-01.

Почему я вынужден перезагрузить, чтобы получить вывод? Есть ли способ получить обновленное значение location.hash без перезагрузки страницы?

1 Ответ

0 голосов
/ 17 января 2019

Я бы порекомендовал вам создать функцию showHash, а затем вызывать ее сразу после загрузки страницы.Кроме того, вы можете добавить прослушиватель событий в window.onhashchange для вызова функции showHash каждый раз, когда изменяется хеш.

showHash();

function showHash() {
  var p = document.querySelector('p');
  p.innerHTML = location.hash;
}

window.onhashchange = showHash;
<html>
  <body>
  <p></p>
  <a href="#2019-01">1</a>
  <a href="#2019-02">2</a>
  </body>
</html>
...