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

javascriptus-maximus-∆ 07.08.2015 09:06

не работает this
 
таварищи! расталкуйте мне чайнику что не так пжста!

какойта пробел в образовании образовался!

вродебы по ссылке this должен быть элемент кнопки - но увы и атнють!


<!DOCTYPE HTML><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title></title><style type="text/css" id="">

.неакт
	{
		display: flex;
		height: 40px;
		width: 80px;
        border: 3px solid gray;
        box-shadow: 2px 2px 8px black;
	}
.акт
	{
		display: flex;
		height: 40px;
        width: 80px; 
        border: 3px solid red;
        box-shadow: 2px 2px 8px black;
	}



</style><script type="text/javascript"> "use strict";


var обьект =
	{
		метод : function()
        	{    
	            this.className = 'неакт';    //нихт арбайтен!
	            alert(this.id);      //нихт арбайтен!
        	},
    };



</script> </head><body>

<span id='кнопка' class='акт' onclick='обьект.метод()'></span>

</body></html>

Aetae 07.08.2015 09:16

Неужто склероз?
onclick='обьект.метод()'
~
onclick=function(){
обьект.метод()
}

javascriptus-maximus-∆ 07.08.2015 09:24

Цитата:

Сообщение от Aetae (Сообщение 383041)
Неужто склероз?
onclick='обьект.метод()'
~
onclick=function(){
обьект.метод()
}

то есть ты намекаеш шо в онклике должна быть function а не ссылка на метод ?
это же гдето должно быть описано в учебнике - где я невниматильна читал ?

javascriptus-maximus-∆ 07.08.2015 12:34

но возникает доп вопроз -

если надо навесить одинаковый обработчик для множества кнопок - то шоли придется для каждой кнопки повторять одинаковый код функции???

javaQest 07.08.2015 17:53

он у тебя работает, только байндинг неправильный.
Передавай окружение явно
<html>


<head>
</head>
<body>



<div id="foo" onclick="o.f(this)">div</div>


<script>

o={
 f: function(env){alert(env.id)}
}




</script>
</body>
</html>

либо вешай на событие непосредственно ф-цию.

javaQest 07.08.2015 17:56

Цитата:

Сообщение от javascriptus-maximus-∆
если надо навесить одинаковый обработчик для множества кнопок - то шоли придется для каждой кнопки повторять одинаковый код функции???

Зачем повторять? вешай один обработчик на все события.


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