11.12.2014, 02:36
|
Новичок на форуме
|
|
Регистрация: 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.
|
|
11.12.2014, 08:30
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
(function() {
var easyscroll = ...
var addEvent = ...
addEvent(window,"load",easyscroll);
}());
Но вообще код убогий, а дублирование одинакового кода - ещё хуже, тем более плодятся одинаковые id которых быть не должно. Надо всё нах*й переделывать. Впрочем работать будет, а поскольку ты не шаришь вообще, то учить тя смысла нет.=\
__________________
29375, 35
|
|
11.12.2014, 14:10
|
Новичок на форуме
|
|
Регистрация: 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);
}());
прокрутка всё же в одном из модулей не рабоает.
посмотреть модули можно тут
|
|
11.12.2014, 14:59
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
Названия переменных менять не надо, классов тоже.
__________________
29375, 35
|
|
11.12.2014, 20:49
|
Новичок на форуме
|
|
Регистрация: 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);
}());
но, к сожалению, по-прежнему прокрутка работает только на одной галерее.
|
|
11.12.2014, 23:41
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
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
|
|
|
|