Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2017, 16:59
Новичок на форуме
Отправить личное сообщение для Gorge Посмотреть профиль Найти все сообщения от Gorge
 
Регистрация: 22.05.2017
Сообщений: 5

ООП через функцию
Помогите пожалуйста.

Пишу код для слайдера самопального, он такой

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, 22.05.2017 в 17:22.
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2017, 17:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Gorge,
getElementsByClassName -- это список, а не один элемент, и значит нужен индекс
document.getElementsByClassName("content_item")[0];
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2017, 17:08
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Gorge
this.rigthScroll


right
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2017, 17:10
Новичок на форуме
Отправить личное сообщение для Gorge Посмотреть профиль Найти все сообщения от Gorge
 
Регистрация: 22.05.2017
Сообщений: 5

так я в отдельном фале пишу, который подключил в 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, 22.05.2017 в 17:23.
Ответить с цитированием
  #5 (permalink)  
Старый 22.05.2017, 17:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Gorge,
может нет ещё элементов на странице?
Ответить с цитированием
  #6 (permalink)  
Старый 22.05.2017, 17:36
Новичок на форуме
Отправить личное сообщение для Gorge Посмотреть профиль Найти все сообщения от Gorge
 
Регистрация: 22.05.2017
Сообщений: 5

есть, подключил в конце body. в отладчике chrome видит и находит их. из всего что получается создается объект, в нем одна функция - пустая, но ни одной переменной в объекте нет..
Ответить с цитированием
  #7 (permalink)  
Старый 22.05.2017, 18:05
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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();

Последний раз редактировалось ruslan_mart, 22.05.2017 в 18:54.
Ответить с цитированием
  #8 (permalink)  
Старый 22.05.2017, 18:15
Новичок на форуме
Отправить личное сообщение для Gorge Посмотреть профиль Найти все сообщения от Gorge
 
Регистрация: 22.05.2017
Сообщений: 5

Спасибо - заработало! А при объявлении и присвоении переменным this обязательно ставить, просто тогда они будут доступны снаружи, а этого не хотелось бы?
Ответить с цитированием
  #9 (permalink)  
Старый 22.05.2017, 18:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Цитата:
this.count < contentItemCount
Цитата:
-(this.count++ + 1)
это верно?
Ответить с цитированием
  #10 (permalink)  
Старый 22.05.2017, 18:46
Новичок на форуме
Отправить личное сообщение для Gorge Посмотреть профиль Найти все сообщения от Gorge
 
Регистрация: 22.05.2017
Сообщений: 5

нет неправильно я только учусь - поэтому методом проб и ошибок!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли на функцию php повесить триггер и отследить выполнение через скрипт? ligisayan jQuery 1 26.06.2015 14:21
Глобальная переменная: не передается новое значение через функцию armidoll Общие вопросы Javascript 7 29.05.2015 21:54
Как стереть значение input через функцию? qwe88 Элементы интерфейса 1 17.04.2015 18:31
Эмулировать список через селект Nanto Элементы интерфейса 2 06.03.2012 11:54
как вставить <select> через функцию .html в jquery vilk jQuery 5 01.05.2010 11:21