ООП через функцию
Помогите пожалуйста.
Пишу код для слайдера самопального, он такой
function SliderMe(){
var containerItem = document.getElementById("container_item");
var contentItem = document.getElementsByClassName("content_item");
var contentItemCount = contentItem.length;
var contentItemWidth = contentItem[0].offsetWidth;
var count=0;
containerItem.style.width = contentItemCount * contentItemWidth + 'px';
this.rigthScroll = function (){
if(this.count>=0 && this.count<contentItemCount) {
this.containerItem.style.marginLeft = -(this.count + 1 ) * this.contentItemWidth;
this.count++;
}
}.bind(this);
}
var slidersMe = new SliderMe();
Почему создается пустой объект я не могу разобраться.. |
Gorge,
getElementsByClassName -- это список, а не один элемент, и значит нужен индекс document.getElementsByClassName("content_item")[0]; Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
right |
так я в отдельном фале пишу, который подключил в html через script.
Весь код такой
(function(){
function SliderMe(){
var containerItem = document.getElementById("container_item");
var contentItem = document.getElementsByClassName("content_item");
var contentItemCount = contentItem.length;
var contentItemWidth = contentItem[0].offsetWidth;
var count=0;
containerItem.style.width = contentItemCount * contentItemWidth + 'px';
this.rightScroll = function (){
if(this.count>=0 && this.count<contentItemCount) {
this.containerItem.style.marginLeft = -(this.count + 1 ) * this.contentItemWidth;
this.count++;
}
}.bind(this);
}
var slidersMe = new SliderMe();
}());
|
Gorge,
может нет ещё элементов на странице? |
есть, подключил в конце body. в отладчике chrome видит и находит их. из всего что получается создается объект, в нем одна функция - пустая, но ни одной переменной в объекте нет..
|
var SliderMe = (function() {
function SliderMe(){
this.containerItem = document.getElementById('container_item');
this.contentItem = document.getElementsByClassName('content_item');
this.contentItemCount = this.contentItem.length;
this.contentItemWidth = this.contentItem[0].offsetWidth;
this.count = 0;
this.containerItem.style.width = this.contentItemCount * this.contentItemWidth + 'px';
}
SliderMe.prototype.rightScroll = function() {
if(this.count >= 0 && this.count < this.contentItemCount) {
this.containerItem.style.marginLeft = -(this.count++ + 1) * this.contentItemWidth;
}
};
return SliderMe;
}());
var slidersMe = new SliderMe();
|
Спасибо - заработало! А при объявлении и присвоении переменным this обязательно ставить, просто тогда они будут доступны снаружи, а этого не хотелось бы?
|
Цитата:
Цитата:
|
нет неправильно :) я только учусь - поэтому методом проб и ошибок!
|
| Часовой пояс GMT +3, время: 08:51. |