Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   this при событии (https://javascript.ru/forum/events/13712-pri-sobytii.html)

leha66 10.12.2010 13:53

this при событии
 
Всем привет.

Такой скрипт:
<html>
    <head>
        <title>
            Java Script
        </title>
        <script>

            function myclass(wbutton_name) {
                this.a = 5
                this.change = func_change

                wbutton = document.getElementsByName(wbutton_name)[0];
                wbutton.onclick = this.change
            }

            function func_change() {
                alert("change " + this.a + " " + this)
            }

        </script>
    </head>
    <body>
        <button name="next">
            next
        </button>
        <script>
            var mc = new myclass("next")
        </script>
    </body>
</html>


После нажатия на кнопку выводится: "change undefined [object HTMLButtonElement]", то есть this во время нажатия соответствует кнопке. А можно ли как-то получить доступ к свойствам объекта? (то есть что бы this.a было равным 5)

Спасибо.

monolithed 10.12.2010 14:18

Не уверен, что я вас правильно понял, но все-таки:
<script type="text/javascript">
window.onload = function(){
    document.getElementsByName('input')[0].onclick = function(){
        alert(this.value = 5);
    };
}
</script>

<input type="button" name="input" value="click" />

exec 10.12.2010 14:40

wbutton.onclick = (function (obj) {
	return function () {
		alert( [obj, obj.a] );
	}
})(this);

x-yuri 10.12.2010 15:01

<html> 
    <head> 
        <script type="text/javascript">
            Function.prototype.of = function( o ){
                var f = this;
                return function(){
                    return f.apply( o, arguments );
                };
            };

            function $( id ){
                return   typeof id == 'string'   ? document.getElementById(id)   : id;
            }

            function myclass(id) { 
                this.a = 5;
                this.el = $(id);
                this.el.onclick = this.onClick.of(this);
            }

            myclass.prototype.onClick = function(){
                alert("change " + this.a + " " + this);
            }
        </script> 
    </head> 
    <body> 
        <button id="next">next</button> 
        <script type="text/javascript"> 
            var mc = new myclass("next") 
        </script> 
    </body> 
</html>

leha66 12.12.2010 19:51

Всем большое спасибо за ответы!
Буду разбираться :)


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