не видится 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, время: 09:17. |