zaza41rus
@zaza41rus

QuerySelector и querySelectorAll?

Верстаю дизайн в виде win98.
Решил добавить функцию претаскивания окон - ну чтоб ваще, как рабочий стол казалось.
let div = document.querySelector(".window");
div.addEventListener('mousedown', function(evt) {
	evt.preventDefault(); 
        // Отслеживаем начальное положение блока по его координатам
	let xStart = evt.clientX;
	let yStart = evt.clientY;
	var onMouseMove = function (evtMove){
		evtMove.preventDefault();
                // Отслеживаем изменение координат мыши
		var xNew = xStart - evtMove.clientX;
		var yNew = yStart - evtMove.clientY;
		xStart = evtMove.clientX;
		yStart = evtMove.clientY;
		div.style.top = (div.offsetTop - yNew) + 'px';
			div.style.left = (div.offsetLeft - xNew) + 'px';
	}
 
	var onMouseUp = function (evtUp){
                // Отменяем подписку на события
		document.removeEventListener('mousemove', onMouseMove);
		document.removeEventListener('mouseup', onMouseUp);
	}
 
 
	document.addEventListener('mousemove', onMouseMove)
	document.addEventListener('mouseup', onMouseUp)
})


.window не один в окне браузера
let div = document.querySelectorAll(".window"); не работает (вроде должен находить все элементы, а не первый)
подозреваю что он находит, но находить и дальше с ними работать походу это разное в отличии от document.querySelector
что не так с этим document.querySelectorAll?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
Проще уж на родительский элемент повесить обработчик события, а там через event.target проверять, какому именно окну принадлежит элемент, в который пользователь нажал.
По поводу querySelectorAll - он возвращает массив элементов, а не единичный элемент, как querySelector. Почему нельзя посмотреть это в документации?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
imko
@imko
Senior Scratch Developer
Так а в чем вопрос? Что возвращает querySelectorAll? Массивоподобную коллекцию элементов. querySelector - просто элемент
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы