не видится this.переменная при вызове обработчика
Привет.
Такая проблема. this.width, инициализированный вызовом конструктора, при непосредственном вызове функции showNextPicture равен 130 - как надо, а если вызвать эту функцию через onclick - то undefuned. Почему? код: function Carousel(width, count){ this.width = width; this.count = count; } Carousel.prototype.init = function(){ // код } Carousel.prototype.showNextPicture = function(){ console.log(this.width); // 130 - если вызвать прямо, undefined - если по щелчку мыши } var carousel = new Carousel(130, 5); carousel.init(); //carousel.showNextPicture(); // Обработчики событий document.getElementById('next').addEventListener("click", carousel.showNextPicture, false); document.getElementById('prev').addEventListener("click", carousel.showPreviousPicture, false); |
OlegALL,
а если так document.getElementById('next').addEventListener("click", function(){ carousel.showNextPicture() } , false); |
Потому что this в обработчике события ссылается на элемент на котором оно висит.
|
рони, не помогло, симптом тот же
|
Цитата:
|
Цитата:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> </head> <body> <p id='next'>жмак сюды</p> <script> function Carousel(width, count){ this.width = width; this.count = count; } Carousel.prototype.init = function(){ // код } Carousel.prototype.showNextPicture = function(){ alert(this.width); // 130 - если вызвать прямо, undefined - если по щелчку мыши } var carousel = new Carousel(130, 5); carousel.init(); //carousel.showNextPicture(); // Обработчики событий document.getElementById('next').addEventListener("click", function(){ carousel.showNextPicture() } , false); //document.getElementById('prev').addEventListener("click", carousel.showPreviousPicture, false); </script> </body> </html> |
Цитата:
|
Часовой пояс GMT +3, время: 02:29. |