Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   координаты по клику (https://javascript.ru/forum/events/53593-koordinaty-po-kliku.html)

skrudjmakdak 10.02.2015 11:23

координаты по клику
 
заметил такую штуку. навешивает событие на элемент. кликаем на дочерний элемент и показываются координаты дочернего элемента
<!DOCTYPE html>
<html>
	<head>
		<title>example</title>
	<link rel="stylesheet" type="text/css" href="lib/font-awesome-4.3.0/css/font-awesome.css">
	<style>
.bl1 {
	width: 200px;
	height: 100px;
	border: 1px solid black;
	position: relative;
}

.bl2 {
	width: 70px;
	height: 70px;
	border: 1px solid black;
	position: absolute;
	top: 10px;
	left: 50px;
}
	</style>
	</head>
	<body>
		<div class="bl1">
			<div class="bl2"></div>
		</div>
		<script>
document.querySelector('.bl1').onclick = function (e) {
	console.log(e);
	console.log(e.offsetX);
}
		</script>
	</body>
</html>

ksa 10.02.2015 11:26

Цитата:

Сообщение от skrudjmakdak
кликаем на дочерний элемент и показываются координаты дочернего элемента

Вроде все логично... :)
http://javascript.ru/tutorial/events...vaniya-sobytiy

skrudjmakdak 10.02.2015 11:29

но если мы пропишем console.log(this); то получим именно тот элемент, на который мы навесили событие. а вот координаты показывает другого элемента

ksa 10.02.2015 13:47

Цитата:

Сообщение от skrudjmakdak
но если мы пропишем console.log(this); то получим именно тот элемент, на который мы навесили событие.

Бивас, тест! (с)

<!DOCTYPE html>
<html ng-app>
<head>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.bl1 {
	width: 200px;
	height: 100px;
	border: 1px solid black;
	position: relative;
}

.bl2 {
	width: 70px;
	height: 70px;
	border: 1px solid black;
	position: absolute;
	top: 10px;
	left: 50px;
}
</style>
<script type='text/javascript'>
</script>
</head>
<body> 
<div class="bl1">
	<div class="bl2"></div>
</div>
<script>
document.querySelector('.bl1').onclick = function (e) {
	o=e.target||window.event.srcElement;
	alert('Это элемент '+o.className)
};
</script>
</body>
</html>

Таки событие ссылается на элемент по которому кликнули...

skrudjmakdak 10.02.2015 21:41

причем тут target? я про то, что событие навешиваю на один элемент, а данные высвечивает по другому. где логика? если бы мне нужны были координаты внутреннего элемента, я бы навесил обработчик на внутренний элемент. имхо бред

MallSerg 11.02.2015 03:41

А логика в здравом смысле =).
Именно здравый смысл и создал не совсем очевидный для всех механизм всплытия событий в JavaScript. Если вкратце то такой механизм позволят в десятки раз ускорить работу событий в браузере.

События всплывают а для тебя это не очевидно =(.

ksa 11.02.2015 08:30

Цитата:

Сообщение от skrudjmakdak
имхо бред

Тогда пиши свой язык... :D

skrudjmakdak 12.02.2015 09:32

Цитата:

Сообщение от ksa (Сообщение 356053)
Тогда пиши свой язык... :D

наверное так и надо сделать))


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