Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вызвать метод функции по клику элемента, созданного в этой функции? (https://javascript.ru/forum/misc/71104-kak-vyzvat-metod-funkcii-po-kliku-ehlementa-sozdannogo-v-ehtojj-funkcii.html)

polinin 26.10.2017 11:03

Как вызвать метод функции по клику элемента, созданного в этой функции?
 
Нужно сделать так чтобы клик по созданному в экземпляре функции элементу вызывал выполнение метода этого же экземпляра функции.
Ниже, в примере, предполагается, что при нажатии на кнопку "ALERT" должно появиться сообщение "OK!", однако, ничего не получается. Помогите, пжл.
var TEST = function()
{
	this.elem = function() { document.body.innerHTML = "<button onclick='"+this+".out();'>ALERT</button>"; };
	this.out = function() { alert("OK!"); };
};
var t = new TEST();
t.elem();

ksa 26.10.2017 11:41

Цитата:

Сообщение от polinin
примере, предполагается, что при нажатии на кнопку "ALERT" должно появиться сообщение "OK!", однако, ничего не получается

Это нужно делать не формированием строки. :no:

Как вариант
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
window.onload=function(){
	var TEST = function(){
		this.elem = function() { 
			var o=document.createElement('button');
			o.innerHTML='Alert';
			o.onclick=this.out;
			document.body.appendChild(o); 
		};
		this.out = function() { alert("OK!"); };
	};
	var t = new TEST();
	t.elem();
};
</script>
</head>
<body>
</body>
</html>

polinin 26.10.2017 12:20

Понял, спасибо за наводку. Строку убрать не могу - в реальном коде нагляднее и удобнее строка, поэтому сделал наподобие этому:
var TEST = function()
{
	this.elem = function()
	{
		document.body.innerHTML = "<button>ALERT</button>";
		document.getElementsByTagName("button")[0].onclick = this.out;
	};
	this.out = function() { alert("OK!"); };
};
var t = new TEST();
t.elem();

рони 26.10.2017 12:58

Цитата:

Сообщение от polinin
поэтому сделал наподобие


Цитата:

Сообщение от polinin
document.body.innerHTML =

убить билла body!!!

polinin 26.10.2017 14:07

Цитата:

Сообщение от рони (Сообщение 468262)
убить билла body!!!

Хех. Это же была просто демонстрационная запись кода, чтоб проще и быстрее... Но все одно, спасибо. :yes:


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