Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Элементарный скрипт c this (https://javascript.ru/forum/misc/18289-ehlementarnyjj-skript-c.html)

9xakep 24.06.2011 18:03

Элементарный скрипт c this
 
Прочитал про this(не на этом сайте) ,пытаюсь сделать элементарный пример,но не работает
<script>
function a() {
this.value = "value2"
}
</script>

<input type="button" value="value1" onclick="a()">

Получается this-будет тот элемент в котором будет активирована функция,то есть this в ф-ии a() будет кнопка,тогда при её нажатии её value(value1) должен меняться на value2.Или я что-то не так понял?

Sweet 24.06.2011 18:24

Цитата:

Сообщение от 9xakep
Или я что-то не так понял?

Да. Можно так:
<input type="button" value="value1" onclick="a.call(this)">
Но лучше, конечно, вынести этот момент из верстки:
//Получаешь как-нибудь ссылку на DOM-элемент в переменную input и
input.onclick = a;

ASerputko 24.06.2011 22:14

<script>
window.onload = function () {
	// создадим объект changeValue
	changeValue = {
		init : function () {			
			this.val = "value2"; // новое значение
			this.input = document.getElementsByTagName("input")[0];			
			this._addEvent();			
		},
		
		_addEvent: function () {
			// внутри события onclick через this мы не сможем увидить объект changeValue
			// потому присваем переменной self текущее значение this-са
			var self = this;
			this.input.onclick = function () {
				self.input.value = self.val;
			}	
		}
	}
	changeValue.init();
}
</script>
<input type="button" value="value1">


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