Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает this в функции (https://javascript.ru/forum/misc/65477-ne-rabotaet-v-funkcii.html)

Артист 21.10.2016 13:30

Не работает this в функции
 
Вставляю на страницу чекбокс, и назначаю ему обработчик.

Когда через html чекбоксу назначаешь обработчик на клик(onclick) - не работает:
Цитата:

undefined = 0
undefined = 0
<html>
	<head></head>
	<script type="text/javascript">
		function save_checkbox()
		{
			alert(this.id + ' = ' + (this.checked ? 1 : 0))
		}
		function main()
		{
			var div = document.createElement('div')
			div.innerHTML = "<br><input type='checkbox' id=checkbox' onclick='save_checkbox()'>"

			document.querySelector('div').appendChild(div)
		}
		document.addEventListener("DOMContentLoaded", main)
	</script>
	<body class=txt bgcolor='#FFF' style='margin: 0;'>
		<center>
			<div>Text</div>
		</center>
	</body>
</html>


А если через JS, то работает:
Цитата:

checkbox = 1
checkbox = 0
<html>
	<head></head>
	<script type="text/javascript">
		function save_checkbox()
		{
			alert(this.id + ' = ' + (this.checked ? 1 : 0))
		}
		function main()
		{
			var div = document.createElement('div')
			div.innerHTML = "<br><input type='checkbox' id='checkbox'>"

			document.querySelector('div').appendChild(div)

			document.querySelector('[type="checkbox"]').addEventListener('click', save_checkbox)
		}
		document.addEventListener("DOMContentLoaded", main)
	</script>
	<body class=txt bgcolor='#FFF' style='margin: 0;'>
		<center>
			<div>Text</div>
		</center>
	</body>
</html>


Почему не работает - то? Задолбала уже эта мистика...

ksa 21.10.2016 13:57

Цитата:

Сообщение от Артист
Почему не работает - то?

Назначение обработчика через атрибут не "назначает" this... :no:
Это может сделать только современный метод addEventListener
Тут бочком про это намекают...
https://learn.javascript.ru/introduction-browser-events
Цитата:

У обработчиков, назначенных с attachEvent, нет this
Ну и через атрибут естественно так же нет того this...
Цитата:

Сообщение от Артист
Задолбала уже эта мистика...

Т.ч. никакой мистики. :)

Артист 21.10.2016 14:31

Ааа...
Спасибо )


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