Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Запись текущего и предыдущего элементов (https://javascript.ru/forum/dom-window/74542-zapis-tekushhego-i-predydushhego-ehlementov.html)

s24344 19.07.2018 15:06

Запись текущего и предыдущего элементов
 
Ребята, подскажите, пожалуйста, как мне решить следующую задачу:
У меня есть массив dom элементов:
[a.nav__item-link, a.nav__item-link, a.nav__item-link, a.nav__item-link, a.nav__item-link, a.nav__item-link, a.nav__item-link, a.nav__item-link]


У каждого из них есть data атрибут:
data-nav-id=""
<a class="nav__item-link" href="players.html" tabindex="0" data-nav-ref="primary-link" data-nav-id="_1"><span>Players</span></a>
<a class="nav__item-link" href="players.html" tabindex="0" data-nav-ref="primary-link" data-nav-id="_2"><span>Players</span></a>


И так далее

При событии mouseenter
Я получаю конкретный элемент, на который я навел.
Каким образом мне сделать, что при последующем выполнении события мне записывать две переменные. Первая, элемент на который я навел. Вторая, предыдуший элемент на который я наводил.

рони 19.07.2018 15:13

s24344,
var prev;

j0hnik 19.07.2018 15:17

<div class="el">1</div>
	<div class="el">3</div>
	<div class="el">4</div>
	<div class="el">5</div>
	<div class="el">6</div>
	<script>

		var div = document.querySelectorAll('div'),x;
		div.forEach(el => el.onmouseenter = e =>{
			console.log(el,x);
			x=el;
		} );

	</script>

s24344 19.07.2018 17:51

Большое спасибо.

s24344 22.07.2018 07:16

Вы не могли бы мне ещё подсказать. Действую по тому же подходу, задача такая же, записывать в переменные на каждое событие текущий и предыдущий элементы, но oldNavPopup, у меня всегда null. Что я делаю не так?

<ul class="nav__list">
	<li class="nav__item">
		<a href="#" class="nav__link">First</a>
		<div class="nav__popup">First popup</div>
	</li>
	<li class="nav__item">
		<a href="#" class="nav__link">Second</a>
		<div class="nav__popup">Second popup</div>
	</li>
	<li class="nav__item">
		<a href="#" class="nav__link">Third</a>
		<div class="nav__popup">Third popup</div>
	</li>
</ul>


document.querySelector('.nav__link').addEventListener('focus', function(event) {
	let oldNavPopup = null;
	let currentNavPopup = null;

	currentNavPopup = event.target.nextElementSibling;

	console.log(currentNavPopup, oldNavPopup); // old у меня всегда null (не перезаписывается)

	oldNavPopup = currentNavPopup;
});

рони 22.07.2018 10:07

s24344,
строки 2 и 3 перенесите в строку ноль, при фокусе вы создате эти переменные снова и снова, а нужно создать только один раз, а потом только менять значение в этих переменных, только так в них можно будет что-то хранить, от фокуса до фокуса.

s24344 22.07.2018 10:19

Спасибо.


Часовой пояс GMT +3, время: 17:07.