Javascript.RU

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

2 очень похожих js-кода на 1 странице. Как изолировать друг от друга их?
Уважаемые мастера своего дела. Как сделать так чтобы процессы, проходящие в данном скрипте были только в нём, и не вышли за его пределы? Требуется исполнить два таких кода на одной и той же странице, (код выполняет прокрутку 2х галерей).

Извините за мою терминологию, я не знаю проф. терминов.

Мне дали подсказку, что их как то можно обернуть в функцию... но как... как это делают в DIV? приведите пожалуйста конечный вариант кода.

посоветовали что то типа того :


(function(w) {
   w.easeScroll = {/* тут уже укажите все ваши методы, которые начинаются с this */ }
})(window)

Но я не смог применить даже этуконструкцию!! моё развитие пока на уровне css//html..

this.easyscroll = function(){
    
    // id of the container element 
    var id = "myContent";
    
    // navigation buttons text
    var nav = ["Scroll Up", "Scroll Down", "Reset"];
    
    //  id for each navigation button (OPTIONAL)
    var navId = ["btnUp", "btnDown", "btnReset"];
 
    // movement speed
    var speed = 5;
    
    // desired height of the container element (in pixels)
    var height = 314;
    
    //
    // END CONFIG
    // do not edit below this line (unless you want to of course :) )
    //
 
    var obj = document.getElementById(id);
    
    obj.up = false;
    obj.down = false;
    obj.fast = false;
 
    var container = document.createElement("div");
    var parent = obj.parentNode;
    container.id="easyscroll";
    parent.insertBefore(container,obj);
    parent.removeChild(obj);    
    
    container.style.position = "relative";
    container.style.height = height + "px";
    container.style.overflow = "hidden";
    obj.style.position = "absolute";
    obj.style.top = "0";
    obj.style.left = "0";
    container.appendChild(obj);
    
    var btns = new Array();
    var ul = document.createElement("ul");
    ul.id="easyscrollnav";
    for (var i=0;i<nav.length;i++){
        var li = document.createElement("li");
        li.innerHTML = nav[i];
        li.id = navId[i];
        btns.push(li);
        ul.appendChild(li);
    };
    parent.insertBefore(ul,container);
    
    btns[0].onmouseover = function(){
        obj.up = true;
        this.className = "over";
    };
    btns[0].onmouseout = function(){
        obj.up = false;
        this.className = "";
    };      
    btns[1].onmouseover = function(){
        obj.down = true;
        this.className = "over";        
    };
    btns[1].onmouseout = function(){
        obj.down = false;
        this.className = "";
    };      
    btns[0].onmousedown = btns[1].onmousedown = function(){
        obj.fast = true;
    };  
    btns[0].onmouseup = btns[1].onmouseup = function(){
        obj.fast = false;
    };      
    btns[2].onmouseover = function(){       
        this.className = "over";
    };  
    btns[2].onmouseout = function(){        
        this.className = "";
    };      
    btns[2].onclick = function(){       
        obj.style.top = "0px";
    };      
        
    this.start = function(){                
        var newTop;
        var objHeight = obj.offsetHeight;
        var top = obj.offsetTop;
        var fast = (obj.fast) ? 2 : 1;
        if(obj.down){        
            newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;   
            obj.style.top = newTop + "px";
        };  
        if(obj.up){      
            newTop = (top < 0) ? top+(speed*fast) : top;
            obj.style.top = newTop + "px";
        };
    };  
    obj.interval = setInterval("start()",50);       
        
};
 
 
//
// script initiates on page load. 
//
 
this.addEvent = function(obj,type,fn){
    if(obj.attachEvent){
        obj['e'+type+fn] = fn;
        obj[type+fn] = function(){obj['e'+type+fn](window.event );}
        obj.attachEvent('on'+type, obj[type+fn]);
    } else {
        obj.addEventListener(type,fn,false);
    };
};
addEvent(window,"load",easyscroll);

Последний раз редактировалось Dimator, 11.12.2014 в 02:39.
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2014, 08:30
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,680

(function() {
  var easyscroll = ...
  var addEvent = ...
  addEvent(window,"load",easyscroll);
}());

Но вообще код убогий, а дублирование одинакового кода - ещё хуже, тем более плодятся одинаковые id которых быть не должно. Надо всё нах*й переделывать. Впрочем работать будет, а поскольку ты не шаришь вообще, то учить тя смысла нет.=\
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2014, 14:10
Новичок на форуме
Отправить личное сообщение для Dimator Посмотреть профиль Найти все сообщения от Dimator
 
Регистрация: 11.12.2014
Сообщений: 4

Сообщение от Aetae Посмотреть сообщение
(function() {
  var easyscroll = ...
  var addEvent = ...
  addEvent(window,"load",easyscroll);
}());

Но вообще код убогий, а дублирование одинакового кода - ещё хуже, тем более плодятся одинаковые id которых быть не должно. Надо всё нах*й переделывать. Впрочем работать будет, а поскольку ты не шаришь вообще, то учить тя смысла нет.=\
ID кажется все заменил... Но видиимо, что то ещё дублировалось.

сделал так:
код первый
(function() {
var easyscroll = function(){
	
	// id of the container element 
	var id = "myContent";
	
	// navigation buttons text
	var nav = ["Scroll Up", "Scroll Down", "Reset"];
	
	//	id for each navigation button (OPTIONAL)
	var navId = ["btnUp", "btnDown", "btnReset"];

	// movement speed
	var speed = 5;
	
	// desired height of the container element (in pixels)
	var height = 314;
	
	//
	// END CONFIG
	// do not edit below this line (unless you want to of course :) )
	//

	var obj = document.getElementById(id);
	
	obj.up = false;
	obj.down = false;
	obj.fast = false;

	var container = document.createElement("div");
	var parent = obj.parentNode;
	container.id="easyscroll";
	parent.insertBefore(container,obj);
	parent.removeChild(obj);	
	
	container.style.position = "relative";
	container.style.height = height + "px";
	container.style.overflow = "hidden";
	obj.style.position = "absolute";
	obj.style.top = "0";
	obj.style.left = "0";
	container.appendChild(obj);
	
	var btns = new Array();
	var ul = document.createElement("ul");
	ul.id="easyscrollnav";
	for (var i=0;i<nav.length;i++){
		var li = document.createElement("li");
		li.innerHTML = nav[i];
		li.id = navId[i];
		btns.push(li);
		ul.appendChild(li);
	};
	parent.insertBefore(ul,container);
	
	btns[0].onmouseover = function(){
		obj.up = true;
		this.className = "over";
	};
	btns[0].onmouseout = function(){
		obj.up = false;
		this.className = "";
	};		
	btns[1].onmouseover = function(){
		obj.down = true;
		this.className = "over";		
	};
	btns[1].onmouseout = function(){
		obj.down = false;
		this.className = "";
	};		
	btns[0].onmousedown = btns[1].onmousedown = function(){
		obj.fast = true;
	};	
	btns[0].onmouseup = btns[1].onmouseup = function(){
		obj.fast = false;
	};		
	btns[2].onmouseover = function(){ 		
		this.className = "over";
	};	
	btns[2].onmouseout = function(){ 		
		this.className = "";
	};		
	btns[2].onclick = function(){ 		
		obj.style.top = "0px";
	};		
		
	this.start = function(){				
		var newTop;
		var objHeight = obj.offsetHeight;
		var top = obj.offsetTop;
		var fast = (obj.fast) ? 2 : 1;
		if(obj.down){		 
			newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;	
			obj.style.top = newTop + "px";
		};	
		if(obj.up){		 
			newTop = (top < 0) ? top+(speed*fast) : top;
			obj.style.top = newTop + "px";
		};
	};	
	obj.interval = setInterval("start()",50);		
		
};


//
// script initiates on page load. 
//

var addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",easyscroll);
}());



код второй

(function() {
var easyscrollvg = function(){
	
	// id контейнера элемента, который нужнзо проокрутить
	var id = "unique_id";
	
	// текст в кнопках навигации
	var nav = ["Вверх ", "Вниз ", "Сброс "];
	
	//	id for each navigation button (OPTIONAL)
	var navId = ["btnUpvg", "btnDownvg", "btnResetvg"];

	// movement speed
	var speed = 5;
	
	// desired height of the container element (in pixels)
	var height = 296;
	
//
	// END CONFIG
	// do not edit below this line (unless you want to of course :) )
	//

	var obj = document.getElementById(id);
	
	obj.up = false;
	obj.down = false;
	obj.fast = false;

	var container = document.createElement("div");
	var parent = obj.parentNode;
	container.id="easyscrollvg";
	parent.insertBefore(container,obj);
	parent.removeChild(obj);	
	
	container.style.position = "relative";
	container.style.height = height + "px";
	container.style.overflow = "hidden";
	obj.style.position = "absolute";
	obj.style.top = "0";
	obj.style.left = "0";
	container.appendChild(obj);
	
	var btnsvg = new Array();
	var ul = document.createElement("ul");
	ul.id="easyscrollnavvg";
	for (var i=0;i<nav.length;i++){
		var li = document.createElement("li");
		li.innerHTML = nav[i];
		li.id = navId[i];
		btnsvg.push(li);
		ul.appendChild(li);
	};
	parent.insertBefore(ul,container);
	
	btnsvg[0].onmouseover = function(){
		obj.up = true;
		this.className = "overvg";
	};
	btnsvg[0].onmouseout = function(){
		obj.up = false;
		this.className = "";
	};		
	btnsvg[1].onmouseover = function(){
		obj.down = true;
		this.className = "overvg";		
	};
	btnsvg[1].onmouseout = function(){
		obj.down = false;
		this.className = "";
	};		
	btnsvg[0].onmousedown = btnsvg[1].onmousedown = function(){
		obj.fast = true;
	};	
	btnsvg[0].onmouseup = btnsvg[1].onmouseup = function(){
		obj.fast = false;
	};		
	btnsvg[2].onmouseover = function(){ 		
		this.className = "overvg";
	};	
	btnsvg[2].onmouseout = function(){ 		
		this.className = "";
	};		
	btnsvg[2].onclick = function(){ 		
		obj.style.top = "0px";
	};		
		
	this.start = function(){				
		var newTop;
		var objHeight = obj.offsetHeight;
		var top = obj.offsetTop;
		var fast = (obj.fast) ? 2 : 1;
		if(obj.down){		 
			newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;	
			obj.style.top = newTop + "px";
		};	
		if(obj.up){		 
			newTop = (top < 0) ? top+(speed*fast) : top;
			obj.style.top = newTop + "px";
		};
	};	
	obj.interval = setInterval("start()",50);		
		
};


//
// script initiates on page load. 
//

var addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",easyscrollvg);
}());


прокрутка всё же в одном из модулей не рабоает.

посмотреть модули можно тут
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2014, 14:59
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,680

Названия переменных менять не надо, классов тоже.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 11.12.2014, 20:49
Новичок на форуме
Отправить личное сообщение для Dimator Посмотреть профиль Найти все сообщения от Dimator
 
Регистрация: 11.12.2014
Сообщений: 4

сделал два кода.

Первый
(function() {
var easyscroll = function(){
	
	// id of the container element 
	var id = "myContent";
	
	// navigation buttons text
	var nav = ["Scroll Up", "Scroll Down", "Reset"];
	
	//	id for each navigation button (OPTIONAL)
	var navId = ["btnUp", "btnDown", "btnReset"];

	// movement speed
	var speed = 5;
	
	// desired height of the container element (in pixels)
	var height = 314;
	
	//
	// END CONFIG
	// do not edit below this line (unless you want to of course :) )
	//

	var obj = document.getElementById(id);
	
	obj.up = false;
	obj.down = false;
	obj.fast = false;

	var container = document.createElement("div");
	var parent = obj.parentNode;
	container.id="easyscroll";
	parent.insertBefore(container,obj);
	parent.removeChild(obj);	
	
	container.style.position = "relative";
	container.style.height = height + "px";
	container.style.overflow = "hidden";
	obj.style.position = "absolute";
	obj.style.top = "0";
	obj.style.left = "0";
	container.appendChild(obj);
	
	var btns = new Array();
	var ul = document.createElement("ul");
	ul.id="easyscrollnav";
	for (var i=0;i<nav.length;i++){
		var li = document.createElement("li");
		li.innerHTML = nav[i];
		li.id = navId[i];
		btns.push(li);
		ul.appendChild(li);
	};
	parent.insertBefore(ul,container);
	
	btns[0].onmouseover = function(){
		obj.up = true;
		this.className = "over";
	};
	btns[0].onmouseout = function(){
		obj.up = false;
		this.className = "";
	};		
	btns[1].onmouseover = function(){
		obj.down = true;
		this.className = "over";		
	};
	btns[1].onmouseout = function(){
		obj.down = false;
		this.className = "";
	};		
	btns[0].onmousedown = btns[1].onmousedown = function(){
		obj.fast = true;
	};	
	btns[0].onmouseup = btns[1].onmouseup = function(){
		obj.fast = false;
	};		
	btns[2].onmouseover = function(){ 		
		this.className = "over";
	};	
	btns[2].onmouseout = function(){ 		
		this.className = "";
	};		
	btns[2].onclick = function(){ 		
		obj.style.top = "0px";
	};		
		
	this.start = function(){				
		var newTop;
		var objHeight = obj.offsetHeight;
		var top = obj.offsetTop;
		var fast = (obj.fast) ? 2 : 1;
		if(obj.down){		 
			newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;	
			obj.style.top = newTop + "px";
		};	
		if(obj.up){		 
			newTop = (top < 0) ? top+(speed*fast) : top;
			obj.style.top = newTop + "px";
		};
	};	
	obj.interval = setInterval("start()",50);		
		
};


//
// script initiates on page load. 
//

var addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",easyscroll);
}());


второй
(function() {
var easyscroll = function(){
	
	// id контейнера элемента, который нужнзо проокрутить
	var id = "unique_id";
	
	// navigation buttons text
	var nav = ["vgScroll Up", "vgScroll Down", "vgReset"];
	
	//	id for each navigation button (OPTIONAL)
	var navId = ["btnUpvg", "btnDownvg", "btnResetvg"];

	// movement speed
	var speed = 5;
	
	// desired height of the container element (in pixels)
	var height = 314;
	
	//
	// END CONFIG
	// do not edit below this line (unless you want to of course :) )
	//

	var obj = document.getElementById(id);
	
	obj.up = false;
	obj.down = false;
	obj.fast = false;

	var container = document.createElement("div");
	var parent = obj.parentNode;
	container.id="easyscroll";
	parent.insertBefore(container,obj);
	parent.removeChild(obj);	
	
	container.style.position = "relative";
	container.style.height = height + "px";
	container.style.overflow = "hidden";
	obj.style.position = "absolute";
	obj.style.top = "0";
	obj.style.left = "0";
	container.appendChild(obj);
	
	var btns = new Array();
	var ul = document.createElement("ul");
	ul.id="easyscrollnav";
	for (var i=0;i<nav.length;i++){
		var li = document.createElement("li");
		li.innerHTML = nav[i];
		li.id = navId[i];
		btns.push(li);
		ul.appendChild(li);
	};
	parent.insertBefore(ul,container);
	
	btns[0].onmouseover = function(){
		obj.up = true;
		this.className = "over";
	};
	btns[0].onmouseout = function(){
		obj.up = false;
		this.className = "";
	};		
	btns[1].onmouseover = function(){
		obj.down = true;
		this.className = "over";		
	};
	btns[1].onmouseout = function(){
		obj.down = false;
		this.className = "";
	};		
	btns[0].onmousedown = btns[1].onmousedown = function(){
		obj.fast = true;
	};	
	btns[0].onmouseup = btns[1].onmouseup = function(){
		obj.fast = false;
	};		
	btns[2].onmouseover = function(){ 		
		this.className = "over";
	};	
	btns[2].onmouseout = function(){ 		
		this.className = "";
	};		
	btns[2].onclick = function(){ 		
		obj.style.top = "0px";
	};		
		
	this.start = function(){				
		var newTop;
		var objHeight = obj.offsetHeight;
		var top = obj.offsetTop;
		var fast = (obj.fast) ? 2 : 1;
		if(obj.down){		 
			newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;	
			obj.style.top = newTop + "px";
		};	
		if(obj.up){		 
			newTop = (top < 0) ? top+(speed*fast) : top;
			obj.style.top = newTop + "px";
		};
	};	
	obj.interval = setInterval("start()",50);		
		
};


//
// script initiates on page load. 
//

var addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",easyscroll);
}());


но, к сожалению, по-прежнему прокрутка работает только на одной галерее.
Ответить с цитированием
  #6 (permalink)  
Старый 11.12.2014, 23:41
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,680

var start = function(){               
        var newTop;
        var objHeight = obj.offsetHeight;
        var top = obj.offsetTop;
        var fast = (obj.fast) ? 2 : 1;
        if(obj.down){       
            newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;   
            obj.style.top = newTop + "px";
        }; 
        if(obj.up){     
            newTop = (top < 0) ? top+(speed*fast) : top;
            obj.style.top = newTop + "px";
        };
    }; 
    obj.interval = setInterval(start, 50);
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как остановить загрузку js файла на странице p3ps AJAX и COMET 6 23.11.2013 08:21
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05
есть ли в js понятие частоты кадров, наподобие как во флэше? andrew_F Общие вопросы Javascript 8 01.05.2012 20:25
Как реализовать отключения JS кода через админку ? lamer Серверные языки и технологии 4 08.02.2012 16:23
Как с помощью JS "на-лету" менять часть HTML кода greendoc Общие вопросы Javascript 2 18.03.2008 20:43