@ikCore

Почему не срабатывает код с методом history.pushState()?

Добрый день!
Обучаюсь JavaScript.
Есть такой урок по history.pushState()
https://youtu.be/sAjAUmtGylY?t=7m20s
В нем мы меняем url при нажатии на элемент меню, причем без хэша (#)

<ul class="nav">
	<li><a href="hi">Hello</a></li>
	<li><a href="bye">Goodbye</a></li>
	<li><a href="okay">Okay</a></li>
</ul>
<p class="content"></p>


Запускаю код, но при нажатии на пункт НЕ показывает content , а переходит по ссылке и как следствие Page not found.

Хотя на видео все работает.
Вопрос: это моя ошибка или с 2014 кода что то сильно изменилось в языке?

var links, updatestate, contentEL, navEL;

contentEL = document.querySelector('.content');
navEL = document.querySelector('.nav');

links = {
	hi: "test1",
	bye: "test2",
	okay: "test3"
};

updatestate = function(state) {
	if (!state) return;
	contentEL.innerHTML = links[state.page];
};

window.addEventListener('popstate', function(e) {
	updatestate(e.state);
});

navEL.addEventListener('click', function(e){
	var state;
	if (e.target.tagName !== 'A') return;
	state = { page: e.taget.getAttribute('href') };
	history.pushState(state, '', state.page);
	updatestate(state);
	e.preventDefault();
	}
);
  • Вопрос задан
  • 510 просмотров
Решения вопроса 2
Bobert88
@Bobert88
Vice President of Javascript, very important guy.
На самом деле все правильно, просто закралась маленькая опечатка:
state = { page: e.target.getAttribute('href') };

У вас вместо таргета тагет. ;)
Ответ написан
risentveber
@risentveber
fullstack web developer
Твоя ошибка:
state = { page: e.taget.getAttribute('href') };

Нужно писать target, а не taget.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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