Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.10.2016, 14:30
Кандидат Javascript-наук
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 146

Не работает 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>


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

Последний раз редактировалось Артист, 21.10.2016 в 14:45.
Ответить с цитированием
  #2 (permalink)  
Старый 21.10.2016, 14:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,196

Сообщение от Артист
Почему не работает - то?
Назначение обработчика через атрибут не "назначает" this...
Это может сделать только современный метод addEventListener
Тут бочком про это намекают...
https://learn.javascript.ru/introduction-browser-events
Цитата:
У обработчиков, назначенных с attachEvent, нет this
Ну и через атрибут естественно так же нет того this...
Сообщение от Артист
Задолбала уже эта мистика...
Т.ч. никакой мистики.
Ответить с цитированием
  #3 (permalink)  
Старый 21.10.2016, 15:31
Кандидат Javascript-наук
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 146

Ааа...
Спасибо )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает console.log.apply(this,arguments) - Почему? Почемучкин Javascript под браузер 9 31.10.2014 17:17
WTF! Как то странно работает вывод функции Giden jQuery 2 30.05.2014 14:22
тело функции работает только при наличии alert sstasv Элементы интерфейса 7 31.08.2011 20:05
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Конструкция не пашет в функции , а в событии работает FRIE jQuery 1 05.03.2010 11:38