Переменная javascript отображается в console.log, но не выводится в браузере

0
задан Lid 19 January 2019 в 19:34
поделиться

1 ответ

Назначая location.hash на year, вы не изменяете p.innerHTML. year и p.innerHTML не ссылаются на ценность друг друга. Когда вы инициализировали следующим образом:

p.innerHTML = window.year;

Значение year было скопировано , так что теперь у вас есть два значения, которые на тот момент оказались одинаковыми, но они не связаны так что если вы назначите новое значение одному, оно также обновит другое. Нет, они не являются ссылками.

Таким образом, в обработчике событий вы также должны назначить новый хеш для p.innerHTML, или, лучше, поскольку хеш-код является текстовым, назначить его для p.textContent:

var p = document.querySelector('p');
var year;

function showHash() {
  // Assign both to textContent and year (they are independent)
  p.textContent = year = location.hash;
  // Maybe call some other functions which need to know about `year`
  manage();
}

function manage() {
  console.log(year);
  // ... etc
}

window.onhashchange = showHash;

location.hash = '#2019'; // This triggers showHash, no need to call it explicitly
<p></p>
<a href="#2018-01">1</a>
<a href="#2018-02">2</a>

0
ответ дан trincot 19 January 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: